Jak usunąć zależności przechodnie?

Używam Ivy do zarządzania zależnościami od mojego projektu.

Do tej pory okreĹ " laĹ 'em zaleĹźnoĹ" Ä ‡ od Hibernate i servlet-api. Jednak sam Hibernate jar ma wiele zależności, które nie są tak naprawdę potrzebne, takie jak jaasi jacc.

To staje się show-stoperem, ponieważ JAAS i jaac są bibliotekami Sun i dlatego ich licencje zabraniają umieszczania ich w repozytoriach Mavena, więc Ivy nie może ich znaleźć tam.

  • Jak zmusić Ivy do hibernacji, ale nie tych dwóch ?
  • jako bonus, gdybym naprawdę ich potrzebował i ściągnął ich słoiki z Sun, w którym folderze w moim komputerze Ivy by ich szukała ?
Author: Leonel, 2009-01-28

4 answers

Jak sprawić, by Ivy pobierał hibernację, ale nie te dwa?

Ivy robi to za pomocą tego, co nazywa "konfiguracjami."Twoja ivy.xml reprezentująca Hibernate będzie musiała podać różne konfiguracje, aby reprezentować różne przypadki użycia hibernate. (Jest oczywiście pewne użycie hibernate, które wymaga jaas i jacc, ale najwyraźniej nie korzystasz z tego przypadku.)

Tutaj {[15] } znajduje się dokumentacja konfiguracji. Jeśli chcesz podać ivy.xml używasz do hibernacji, mogę podać wskaźniki dotyczące budowania konfiguracji, które usuną określone biblioteki, które chcesz usunąć.

Gdybym naprawdę ich potrzebował i ściągnął ich słoiki z Sun, w którym folderze w moim komputerze Ivy by ich szukała?

"katalogi", w których ivy szuka plików i artefaktów ivy, są określone przez listę używanych rozwiązań. Lista resolverów jest określona w pliku ustawień ivy (Zwykle o nazwie ivysettings.xml.) Zazwyczaj nie są to lokalne katalogi, ale zdalne adresy URL. Istnieje; jednak Typ rozwiązania local-file, który będzie działał w tym celu.

Jeśli to zrobisz, będziesz musiał podać zarówno pliki ivy, jak i artefakty (jar), z których każdy ma nazwy plików pasujące do wzorców resolverów. Szczegóły na ten temat znajdują się w dokumentacji.

Oto przykład rozwiązania local-file z pliku ustawień ivy:
<filesystem name="myfiles" checkconsistency="false" checksums="" transactional="false">
   <ivy pattern="/data/repo/[organisation]/[module]-[revision].ivy.xml"/>
   <artifact pattern="/data/repo/[organisation]/[module]-[revision].[ext]"/>
</filesystem>

Zwróć również uwagę, że będziesz musiał skierować swoje zadania do właściwego resolver. Można to zrobić używając atrybutu resolver w zadaniach ant lub atrybutu defaultResolver w elemencie settings w pliku ustawień ivy.

Tutaj znajduje się dokumentacja dotycząca resolverów.

EDIT: operacja znalazła mniej czasochłonne obejście jego specyficznego pierwotnego problemu. Tag potomny" exclude " dla tagu zależności wykonał zadanie za niego:

<dependencies>  
   <dependency org="org.hibernate" name="hibernate-core" rev="3.3.1.GA" conf='..'> 
       <exclude name='jaas' /> 
       <exclude name='jacc' />
   </dependency>
</dependencies>
 19
Author: Jared,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-25 18:37:59

Inną opcją, aby nie pobierać żadnych zależności, jest wyłączenie ich za pomocą atrybutu transitive. Więc jeśli chcesz hibernate-core, ale żadnej z jego zależności, możesz to zrobić:

<dependencies>  
   <dependency org="org.hibernate" name="hibernate-core"
               rev="3.3.1.GA" conf='..'
               transitive="false" /> 
</dependencies>
 25
Author: Jared Oberhaus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-18 04:04:59

Przeglądając strony i blogi, znalazłem następujące ustawienia ivy do pracy przy chwytaniu jaas / jacc i hibernate

<ivysettings>

<settings defaultResolver="chained" checkUpToDate="true" />

<resolvers>
    <chain name="chained">
        <url name="com.springsource.repository.bundles.release">
            <ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
            <artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
        </url>

        <url name="com.springsource.repository.bundles.external">
            <ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
            <artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
        </url>

        <ibiblio name="ibiblio" m2compatible="true"/>

        <ibiblio name="jboss" root="http://repository.jboss.org/maven2/" m2compatible="true"/>

        <ibiblio name="java-net-maven1" root="http://download.java.net/maven/1" pattern="${java.net.maven.pattern}" m2compatible="false"/>

        <ibiblio name="java-net-maven2" root="http://download.java.net/maven/2/" m2compatible="true"/>

        <ibiblio name="compass" m2compatible="true" root="http://repo.compass-project.org" />

    </chain>

</resolvers>

JBoss ibibilio resolver jest tym, co zrobił trik w chwytaniu JAAS / JAAC

Moja ivy.xml może następnie ściągnąć go za pomocą
<ivy-module version="2.0">

<info organisation="foo" module="Bar"/>
<dependencies>

    <dependency org="com.h2database" name="h2" rev="1.2+"/>

    <dependency org="org.hibernate" name="hibernate-annotations" rev="3.4.0.GA"/>     

</dependencies>

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-29 02:42:01

Aby odpowiedzieć na drugie pod-Pytanie dosłownie , którego do tej pory nikt nie zrobił, "w którym folderze w mojej maszynie Ivy szukałaby słoików?"To zależy. Zakładając, że nie zmieniłeś lokalizacji w ivysettings.xml lub inny plik konfiguracyjny: dla JAAS, to będzie: ( User home )/.ivy2 / cache / javax.bezpieczeństwo / jaas / jars. Jeśli Ivy już bezskutecznie próbował znaleźć JAA w Maven Central lub innych repo, to drzewo katalogów powinno już w większości istnieć, a wszystkie należy utworzyć katalog "jars" i umieścić jaas-1.0.01.słoik w nim. Ivy nie będzie już narzekać na brakującą zależność w następnym wywołaniu.

EDIT: następnie ponownie, zobacz dyskusję poniżej, aby zobaczyć rozważania, aby nie robić tego w ten sposób.

((User home ) jest C:/Users / (username ) w Windows 7).

 0
Author: László van den Hoek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-09 17:05:36