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

如何使用eclipse中的Ivy+IvyDE在lib和WEB-INF/lib中放置不同的jar

陆敏学
2023-03-14
    null
<ivy:retrieve pattern="war/WEB-INF/lib/[artifact]-[revision].[ext]" file="ivy-web.xml" type="jar" />
<ivy:retrieve pattern="lib/[artifact]-[revision].[ext]" file="ivy.xml" type="jar" />
  • 图像尚不允许:-(

我注意到在另一个post评论(在Eclipse中映射多个ivy文件)中,它们提到只使用1个ivy.xml--但我不太确定如何实现?

哦,我也注意到了这一点:IvyDE+WTP:如何解决WTP忽略ivy库的问题?-然而,我的项目没有使用正确的方面,我宁愿不添加它们。

<configurations>
    <conf name="compile" description="used for building"/>
    <conf name="runtime" description="used for running"/>
</configurations>

 <dependencies>
    <!-- compile -->
    <dependency org="org.codehaus.jackson" name="jackson-core-asl" rev="1.9.2" conf="compile->default"/>
    <dependency org="org.codehaus.jackson" name="jackson-xc" rev="1.9.2" conf="compile->default"/>
    <dependency org="org.codehaus.jackson" name="jackson-jaxrs" rev="1.9.2" conf="compile->default"/>


    <!-- runtime -->
    <dependency org="com.google.guava" name="guava" rev="14.0.1" conf="runtime->default"/>
    <dependency org="com.google.inject" name="guice" rev="3.0"  conf="runtime->default"/>
    <dependency org="aopalliance" name="aopalliance" rev="1.0" conf="runtime->default"/>
    <dependency org="javax.inject" name="javax.inject" rev="1" conf="runtime->default"/>
</dependencies>

我再次尝试只添加一个ivy.xml。接下来是Project properties>Ivy>Retrieve List>Add-添加了2个不同的配置,一个用于编译,它映射到/lib。另一个使用“运行时”配置,并为检索模式指定“war/WEB-INF/lib/[artifact]-[revision].[ext]”。

然而,我最终在war/web-inf/lib/中得到了“compile”,这不是我想要的。我只想在那里复制运行时依赖项。

共有1个答案

刘嘉木
2023-03-14

我认为您缺少的一点是在检索任务中配置的使用:

<ivy:retrieve pattern="lib/[artifact]-[revision].[ext]" conf="compile" />

配置是Ivy将依赖项分组在一起的机制。

├── build.xml
├── ivy.xml
└── target
    ├── lib
    │   ├── jackson-core-asl-1.9.2.jar
    │   ├── jackson-jaxrs-1.9.2.jar
    │   ├── jackson-mapper-asl-1.9.2.jar
    │   └── jackson-xc-1.9.2.jar
    ├── reports
    │   ├── ivy-report.css
    │   ├── myorg-mymodule-compile.html
    │   └── myorg-mymodule-runtime.html
    └── war
        └── WEB-INF
            └── lib
                ├── aopalliance-1.0.jar
                ├── asm-3.1.jar
                ├── cglib-2.2.1-v20090111.jar
                ├── guava-14.0.1.jar
                ├── guice-3.0.jar
                └── javax.inject-1.jar
<project name="demo" default="retrieve" xmlns:ivy="antlib:org.apache.ivy.ant">

   <property name="build.dir" location="target"/>

    <target name="resolve" description="Use ivy to resolve dependencies">
        <ivy:resolve/>
        <ivy:report todir='${build.dir}/reports' graph='false' xml='false'/>
    </target>

    <target name="retrieve" depends="resolve" description="Populate directories">
      <ivy:retrieve pattern="${build.dir}/lib/[artifact]-[revision].[ext]" conf="compile" />
      <ivy:retrieve pattern="${build.dir}/war/WEB-INF/lib/[artifact]-[revision].[ext]" conf="runtime" />
    </target>

    <target name="clean" description="Cleanup build files">
        <delete dir="${build.dir}"/>
    </target>

    <target name="clean-all" depends="clean" description="Additionally purge ivy cache">
        <ivy:cleancache/>
    </target>

</project>

备注:

    null
<ivy-module version="2.0">
  <info organisation="myorg" module="mymodule"/>

  <configurations>
    <conf name="compile" description="used for building"/>
    <conf name="runtime" description="used for running"/>
  </configurations>

  <dependencies>
    <!-- compile -->
    <dependency org="org.codehaus.jackson" name="jackson-core-asl" rev="1.9.2" conf="compile->default"/>
    <dependency org="org.codehaus.jackson" name="jackson-xc" rev="1.9.2" conf="compile->default"/>
    <dependency org="org.codehaus.jackson" name="jackson-jaxrs" rev="1.9.2" conf="compile->default"/>

    <!-- runtime -->
    <dependency org="com.google.guava" name="guava" rev="14.0.1" conf="runtime->default"/>
    <dependency org="com.google.inject" name="guice" rev="3.0" conf="runtime->default"/>
    <dependency org="aopalliance" name="aopalliance" rev="1.0" conf="runtime->default"/>
    <dependency org="javax.inject" name="javax.inject" rev="1" conf="runtime->default"/>
  </dependencies>
</ivy-module>
 类似资料:
  • 我在webapp/WEB-INF/lib/文件夹下添加了一个依赖项。 当我使用maven构建时,我希望在war中将它复制到WEB-INF/lib,而不是WEB-INF/classes/WEB-INF/lib。我正在寻找这是使用maven本身来完成的。 我已经在pom文件中提到了打包作为战争,但是依赖项没有被复制。我是不是在pom文件里漏掉了什么。我已经复制了下面的pom: 附上战争内容截图。

  • 问题内容: 我正在使用Eclipse,我需要能够将Java库(JAR文件)添加到Web应用程序的文件夹中。我该如何实现? 问题答案: 将jar文件添加到您的WEB-INF / lib文件夹中。 在Eclipse中右键单击您的项目,然后转到“构建路径>配置构建路径” 添加“ Web应用程序库”库 这将确保所有WEB-INF / lib jar都包含在类路径中。

  • 如何才能缓解这种情况?

  • 同时,我也想坚持使用动态Web项目或将其改为Maven项目。

  • 根据这个问题,我创建了一个实现Catalina LifecycleListener类的类。 如何在Tomcat启动时运行脚本? 当我将JAR文件放置在webapps/root/web-inf/lib中时,Tomcat启动失败,出现类未找到的异常: java.lang.ClassNotFoundException:Net.Company.Tomcat.StartupEventHookListener

  • 我知道有关这方面的问题已经得到了回答,但在我的搜索过程中,我还没有遇到这个问题得到了回答。 我一直试图将导入的JAR文件包含在spring应用程序的构建(如下所示)中,但我所做的一切都不是解决方案。在使用Tomcat和Ant构建Eclipse时,我收到“Package dousnot exist”错误,因为它在WEB-INF/lib文件夹中找不到JAR文件(显然)。Eclipse不允许我将文件从引