当前位置: 首页 > 知识库问答 >
问题:

Ivy从Ant解析jerse-servlet,但不是IvyDE

喻增
2023-03-14

我正在尝试使用Apache Jersey构建一个restful服务器。我正在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调用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}看起来好像在某处没有正确解析变量。

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

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的一部分

虽然输出声明:

[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个答案

许招
2023-03-14

作为原始问题的更新:

我也有这种情况,我可以使用蚂蚁解析在控制台上解决,但IvyDe(在Eclipse 4.2下)给我错误“无法解决依赖关系[...]”

通过这篇文章,我成功地编辑了IvyDE的设置(工作区首选项-

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

从现在开始,一切都很好。

谯阳伯
2023-03-14

默认情况下,ivy将从Maven Central下载依赖项,因此除非您使用自己的Maven存储库管理器,否则您不需要ivy设置文件。我已经说过,声明以下一项对我来说很好:

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

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

 类似资料:
  • 最后是如何编写ivy.xml来获取我正在使用的库的最新版本。例如,我正在使用jgraph.jar、commons-codec-1.6.jar等,有人能演示一下如何在ivy.xml文件中编写代码来获取这些文件的最新版本吗?这些都在maven中央存储库中可用,我可以通过ivy.xml连接到它吗?如果是,怎么做?

  • 我刚刚使用apache ant设置了我的第一个项目,ivy作为依赖项管理器。它工作得很好!但是有一件事我无法释怀。因为我有几个使用slf4j的依赖项,所以存在版本不匹配的冲突。所以我在ivy.xml中定义了一个conflict标签来强制某个版本(本例中是1.5.6)。使用eclipse插件IvyIDE运行Ivy resolve不会出错。但是当使用我的ant构建文件来构建我的应用程序时,我得到了一个

  • 我的定义如下: 我的存储库中有两个文件: http://repo.example.com/repo/myorg/mymodule/1.0-SNAPSHOT/mymodule-1.0.0-ivy.xml http://repo.example.com/repo/myorg/mymodule/1.0-SNAPSHOT/mymodule-1.0.0.jar 当我下定决心时,艾薇似乎找不到我的描述。我试着

  • 我遇到了一件奇怪的事。我用常春藤检索标签把罐子放在某处。如果我编写如下代码: 它工作正常。但是如果我添加如下内容: 它会抛出“无法解析依赖关系”。有什么建议吗?谢了。

  • 我目前有一个私有的Java项目,我正在努力使其成型,以供其他开发人员使用。我尝试做的一件事是让Ant自己下载像JUnit、PMD和FindBugs这样的东西所需要的JAR,这样开发人员就不必自己安装它了。因此,我已经卸载了所有这些内容的RPM包(以确保我使用的是Ivy下载的版本),并且Ivy可以很好地下载JUnit相关的JAR文件。然而,我有两个(可能相关的)问题: 1)如果为任务输入,则会收到警

  • 问题内容: 我正在尝试使用Ant,Ivy和JUnit进行一个简单的(?)测试项目。基本思想是Ivy将下载junit.jar,然后Ant将使用它。 请注意,junit jar位于类路径上,因为否则(classpath在junit任务中没有元素),我会看到“ 的必须包含(如果不在Ant自己的类路径中)”。另外,下面给出的类在中。 但是,当我尝试ant test以下操作时,我看到: test: 所以我猜