0

Apache Jersey を使用して安らかなサーバーを構築しようとしています。私はEclipse Indigoで開発しており、このivy.xmlファイルで依存関係管理にIvyを使用しています

<?xml version="1.0" encoding="UTF-8"?>

<!--=========================================================================-->
<!--
-->
<!--=========================================================================-->

<ivy-module version="2.2">      
    <info organisation="com.mypackage" module="mymodule"/>
    <dependencies>
        <dependency org="com.sun.jersey" name="jersey-servlet" rev="1.12"/>
    </dependencies>
</ivy-module>

これにより、ant からの ivy の呼び出しは問題なく解決されますが、IvyDE からはこのエラーが発生します

Some projects fail to be resolved
Impossible to resolve dependencies of com.mypackage#mymodule;working@Samsung-Windows
unresolved dependency: org.jboss.weld#weld-spi;1.1.4.Final: not found
unresolved dependency: javax.annotation#jsr250-api;${jsr250.api.version}: not found
unresolved dependency: org.jboss.weld#weld-api;1.1.4.Final: not found
unresolved dependency: javax.inject#javax.inject;${atinject.api.version}: not found
unresolved dependency: org.jboss.spec.javax.interceptor#jboss-interceptors-api_1.1_spec;${interceptor.api.version}: not found

私には ${atinject.api.version} がどこかで変数を正しく解決していないように見えます。

Ivy についての私の理解は非常に表面的であるため、良いアイデアはありません。

IvyDE と ant の両方が同じ ivysettings.xml ファイルを使用しています (少なくとも、使用していると思います)。

<?xml version="1.0" encoding="UTF-8"?>

<!--=========================================================================-->

<!--=========================================================================-->

<ivysettings>
   <settings defaultResolver="ibiblio"/>
   <resolvers>
          <ibiblio name="ibiblio" m2compatible="true"/>
          <ibiblio name="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"/>
    </resolvers>
</ivysettings>

どの方向も素晴らしいでしょう。

よろしくお願いします。

編集:Build.xmlの一部を追加

出力は主張しますが、私はapache-ivy-2.2.0を使用しています:

[ivy:configure] :: Apache Ivy 2.3.0-rc1 - 20120416000235 :: http://ant.apache.org/ivy/ ::

これは build.xml です:

<?xml version="1.0"?>

<project name="IvyTest" default="ivy.retrieve" xmlns:ivy="antlib:org.apache.ivy.ant">
    <description>
        IvyTest
    </description>

    <!--=====================================================================-->
    <!-- Properties                                                          -->
    <!--=====================================================================-->

    <!-- General properties. -->
    <property name="bin" location="bin" />
    <property name="lib" location="lib" />
    <property name="lib.ivy" location="${lib}/ivy-managed" />

    <property name="ivy.version" value="2.2.0" />
    <property name="ivy.home" location="${bin}/apache-ivy-${ivy.version}" />
    <available property="ivy.installed" file="${ivy.home}/ivy-${ivy.version}.jar" />

    <property name="ant.build.javac.source" value="1.7" />
    <property name="ant.build.javac.target" value="1.7" />

    <!--=====================================================================-->
    <!-- Targets: Ivy                                                        -->
    <!--=====================================================================-->

    <!--============================ ivy.download ===========================-->
    <target name="ivy.download" unless="ivy.installed">
        <mkdir dir="${ivy.home}"/>
        <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar" dest="${ivy.home}/ivy-${ivy.version}.jar" usetimestamp="true"/>
    </target>

    <!--============================ ivy.init ===============================-->
    <target name="ivy.init" depends="ivy.download">
        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${ivy.home}/ivy-${ivy.version}.jar"/>
    </target> 

    <!--============================ ivy.resolve ============================-->
    <target name="ivy.resolve" description="Resolve dependencies with Ivy" depends="ivy.configure">
        <ivy:resolve />
    </target>

    <!--============================ ivy.retrieve ===========================-->
    <target name="ivy.retrieve" description="Retrieve dependencies with Ivy" depends="ivy.configure">
        <ivy:retrieve log="verbose" pattern="${lib.ivy}/[artifact]-[revision].[ext]" type="jar,bundle" sync="true"/>
    </target>

    <!--============================ ivy.configure ==========================-->
    <target name="ivy.configure" description="Configure Ivy settings file" depends="ivy.init">
        <ivy:configure file="ivysettings.xml"/>
    </target>

    <!--============================ ivy.clean ==============================-->
    <target name="ivy.clean" description="Cleans the Ivy cache" depends="ivy.init">
        <ivy:cleancache />
    </target>

</project>
4

2 に答える 2

1

デフォルトでは、ivy は依存関係を Maven Central からダウンロードするため、独自の Maven リポジトリ マネージャーを使用しない限り、ivy 設定ファイルは必要ありません。1つを宣言することは良い習慣であり、次のことは私にとってはうまくいきます:

<ivysettings>
    <settings defaultResolver="central"/>
    <resolvers>
        <ibiblio name="central" m2compatible="true"/>
    </resolvers>
</ivysettings>

あなたの例よりもはるかに単純であることに注意してください。古い java.net リポジトリは実際には使用されなくなりました。そのコンテンツのほとんど (すべてではないにしても) は Maven Central に移行されています。

于 2012-05-28T18:16:14.513 に答える
0

元の質問の更新として:

を使用してコンソールで解決できる状況もありましたant resolveが、IvyDe (Eclipse 4.2 の下) は「依存関係を解決できません [...]」というエラーを出していました。

IvyDE の設定 (Workspace Preferences -> Ivy -> Settings) を編集し、このコンテンツを含む ivysettings.properties ファイルを追加することができたこの投稿を進めてください。

ivy.home=${user.home}/.ant
ivy.jar.dir=${ivy.home}/lib
ivy.jar.file=${ivy.jar.dir}/ivy.jar

これからは、すべてがうまくいきました。

于 2013-06-29T22:32:20.800 に答える