2012-05-27 129 views
0

我想建立一个安静的服务器使用Apache泽西。我在Eclipse靛蓝开发和使用的Ivy依赖管理这个ivy.xml文件常春藤解决从蚂蚁泽西servlet但不是IvyDE

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

这样就解决了从蚂蚁精呼叫常春藤,但是从IvyDE我得到这个错误

Some projects fail to be resolved 
Impossible to resolve dependencies of com.mypackage#mymodule;[email protected] 
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}看起来像某种方式不能正确地解析变量。

我对常春藤的理解很肤浅,所以我没有什么好的想法。

IvyDE和蚂蚁都使用相同的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> 

任何方向都会很棒。

非常感谢。

编辑:

我使用Apache的常春藤2.2.0尽管输出的权利要求在build.xml的添加部分:

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

回答

1

默认情况下,ivy将从Maven Central下载依赖项,所以除非您使用自己的Maven仓库管理器,否则不需要常青藤设置文件。 说了,这是很好的做法,申报一个及以下为我工作得很好:

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

注意到它比你的例子简单得多。旧的java.net版本库不再被使用,大多数(如果不是全部的话)内容已经被迁移到Maven Central。

+0

马克,谢谢你。我尝试了你的设置文件,并做了一些游戏。看来我以前可能错了。来自蚂蚁的常春藤实际上以相同的方式失败。当你说“以下适用于我”时,你的意思是我的ivy.xml吗?我认为可能在我依赖的某个配置文件中存在问题。一般来说,我应该如何处理?再次感谢你的帮助。 – user1420538

+0

我从常春藤切换到Maven,并且工作正常。 FWIW。虽然,我宁愿弄清楚常春藤会发生什么。 – user1420538

+0

@ user1420538是的,我用你的常青藤文件,并按预期下载了依赖关系。如果您想进一步排除故障,请提供您正在使用的ivy版本以及build.xml中的代码段,详细说明您如何调用ivy。 –

0

为更新到你原来的问题:

我也有,我可以解决在控制台上使用ant resolve但IvyDe(Eclipse的4.2下),给我的错误“不可能解决的依赖性[局面。 ..]”

率先通过这个post我设法编辑IvyDE的设置(工作区首选项 - >常春藤 - >设置),并添加一个ivysettings.properties与此内容文件:

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

从现在开始,一切正常。