21

プロジェクトの依存関係を管理するためにIvyを使用しています。

ここまでで、Hibernate と servlet-api への依存関係を指定しました。ただし、hibernate jar 自体には、 jaasjaccなど、実際には必要のない多くの依存関係があります。

jaas と jaac は Sun のライブラリであり、それらのライセンスはそれらを Maven リポジトリに配置することを禁じているため、Ivy はそこにそれらを見つけることができません。

  • Ivy が Hibernate をダウンロードするようにするにはどうすればよいですか?
  • おまけとして、実際にそれらが必要で、Sun から Jar をダウンロードした場合、Ivy はマシンのどのフォルダーでそれらを探しますか?
4

4 に答える 4

25

依存関係をダウンロードしないための別のオプションは、transitive属性を使用してそれらを無効にすることです。したがって、 が必要hibernate-coreであるが、その依存関係が何もない場合は、次のようにすることができます。

<dependencies>  
   <dependency org="org.hibernate" name="hibernate-core"
               rev="3.3.1.GA" conf='..'
               transitive="false" /> 
</dependencies>
于 2009-04-18T04:04:59.413 に答える
19

IvyにHibernateをダウンロードさせ、これら2つをダウンロードさせるにはどうすればよいですか?

Ivy は、「構成」と呼ばれるものを使用してこれを行います。Hibernateivy.xmlを表す は、休止状態のさまざまなユースケースを表すためにさまざまな構成を提供する必要があります。(明らかに、jaas と jacc を必要とする休止状態の使用がいくつかありますが、明らかにそのケースを使用していません。)

構成に関するドキュメントは次のとおりです休止状態に使用しているを提供したい場合ivy.xmlは、削除したい特定のライブラリを削除する構成を構築するためのポインターを提供できます。

実際にそれらが必要で、Sun から Jar をダウンロードした場合、Ivy はマシンのどのフォルダーでそれらを探しますか?

ivy が ivy ファイルとアーティファクトを検索する「ディレクトリ」は、使用しているリゾルバーのリストによって指定されます。リゾルバーのリストは、ivy 設定ファイル (通常は という名前ivysettings.xml) で指定されます。通常、これらはローカル ディレクトリではなく、リモート URL です。がある; ただし、これで機能するローカル ファイル リゾルバー タイプ。

これを行う場合、ivy ファイルと成果物 (jar) の両方を提供する必要があり、それぞれにリゾルバー パターンに一致するファイル名が付けられます。その詳細はドキュメントにあります。

以下は、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>

また、ivy タスクを正しいリゾルバーに向ける必要があることに注意してください。Ant タスクのリゾルバー属性、またはivy 設定ファイルdefaultResolverの要素の属性を使用してこれを行うことができます。settings

ここにリゾルバーに関するドキュメントがあります。

編集: OPは、彼の特定の元の問題に対して、時間のかかる集中的な回避策を見つけました。依存関係タグの「除外」子タグは、彼のために仕事をしました:

<dependencies>  
   <dependency org="org.hibernate" name="hibernate-core" rev="3.3.1.GA" conf='..'> 
       <exclude name='jaas' /> 
       <exclude name='jacc' />
   </dependency>
</dependencies>
于 2009-01-30T21:04:05.833 に答える
0

Web とブログを閲覧すると、次の ivy-settings が jaas/jacc と 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 リゾルバーは、JAAS/JAAC を取得するトリックを行ったものです。

私のivy.xmlは、それからそれを引き込むことができます

<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>

于 2009-11-29T02:42:01.613 に答える
0

2 番目のサブ質問に文字通り答えるために、これまで誰も行ったことはありませんが、「Ivy は私のマシンのどのフォルダーで JAR を探しますか?」場合によります。ivysettings.xml または別の構成ファイルの場所を変更していないと仮定すると、JAAS の場合、これは ( user home )/.ivy2/cache/javax.security/jaas/jars になります。Ivy がすでに Maven Central または他のリポジトリで JAAS を見つけようとして失敗した場合、そのディレクトリ ツリーの大部分は既に存在しているはずです。必要なことは、「jars」ディレクトリを作成してjaas-1.0.01.jarを配置することだけです。それ。Ivy は、次の呼び出しで欠落している依存関係について不平を言うことはもうありません。

編集:次に、以下の説明を参照して、このようにしないための考慮事項を確認してください。

(( user home ) は、Windows 7 ではC:/Users/( username ) です)。

于 2012-02-08T17:00:54.953 に答える