首页 文章

Ivy从Ant解析了jersey-servlet而不是IvyDE

提问于
浏览
0

我正在尝试使用Apache Jersey构建一个安静的服务器 . 我正在使用Eclipse Indigo进行开发,并使用Ivy对此ivy.xml文件进行依赖关系管理

<?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的精细调用常 Spring 藤,但是从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

对我来说,$ 看起来好像在某种程度上无法正确解析变量 .

我对常 Spring 藤的理解非常肤浅,所以我没有任何好的想法 .

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>

任何方向都会很棒 .

非常感谢提前 .

Edit: Adding portion of 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>

2 回答

  • 1

    默认情况下,ivy将从Maven Central下载依赖项,因此除非您使用自己的Maven存储库管理器,否则您将不需要常 Spring 藤设置文件 . 虽然说声明一个以下的作品对我来说是好的做法:

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

    请注意,它比您的示例简单得多 . 旧的java.net存储库不再使用,大多数(如果不是全部)其内容已迁移到Maven Central .

  • 0

    作为原始问题的更新:

    我也有使用 ant resolve 可以在控制台上解决的情况,但是IvyDe(在Eclipse 4.2下)给了我错误"Impossible to resolve dependencies [...]"

    通过这个post我设法编辑了IvyDE的设置(工作区首选项 - >常 Spring 藤 - >设置)并添加了一个包含以下内容的ivysettings.properties文件:

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

    从现在开始一切正常 .

相关问题