是否有任何Ant特性可以将类路径依赖项复制到WEB-INF/lib?
我不能影响将类路径依赖项复制到WEB-INF/lib类别的过程:没有专门的ANT任务复制这些JAR(至少,我找不到任何以相关的“WEB-INF/lib”字符串作为路径参数的“复制”任务),但它们出现在项目构建之后。如何影响这个过程?基本上,我需要排除JAXB JAR以避免依赖冲突。同时,我在编译时需要这些JAR,所以我无法删除它们。也许,使用“删除”任务手动擦除这些JAR更容易些?您所面临的是多类路径管理。在典型的构建中,至少有4种类型的类路径:是否有任何Ant特性可以将类路径依赖项复制到WEB-INF/lib?,ant,Ant,我不能影响将类路径依赖项复制到WEB-INF/lib类别的过程:没有专门的ANT任务复制这些JAR(至少,我找不到任何以相关的“WEB-INF/lib”字符串作为路径参数的“复制”任务),但它们出现在项目构建之后。如何影响这个过程?基本上,我需要排除JAXB JAR以避免依赖冲突。同时,我在编译时需要这些JAR,所以我无法删除它们。也许,使用“删除”任务手动擦除这些JAR更容易些?您所面临的是多类路径管理。在典型的构建中,至少有4种类型的类路径: 编译:代码直接调用的类 运行时:代码通过其他类
- 编译:代码直接调用的类
- 运行时:代码通过其他类间接调用的类
- 提供的:需要编译的类,但其实现将由目标平台提供
- 测试:测试代码时需要的附加类(如junit),但最终应用程序未附带这些类
<project name="demo" default="build">
<!--
================
File collections
================
-->
<fileset dir="lib" id="compile.files">
<include name="*.jar"/>
<exclude name="slf4j-log4j12.jar"/>
<exclude name="log4j.jar"/>
<exclude name="junit.jar"/>
<exclude name="hamcrest-core.jar"/>
</fileset>
<fileset dir="lib" id="runtime.files">
<include name="*.jar"/>
<exclude name="junit.jar"/>
<exclude name="hamcrest-core.jar"/>
</fileset>
<fileset dir="lib" id="test.files">
<include name="*.jar"/>
</fileset>
<!--
===============
Compile targets
===============
-->
..
..
<target name="compile" depends="init,resolve, resources" description="Compile code">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false" debug="true">
<classpath>
<fileset refid="compile.files"/>
</classpath>
</javac>
</target>
<!--
===============
Distribution targets
===============
-->
..
..
<target name="package" depends="test" description="Create the WAR file">
<copy todir="build/lib">
<fileset refid="runtime.files"/>
</copy>
<war destfile="${war.file}" webxml="${resources.dir}/web.xml">
<fileset dir="${resources.dir}" excludes="web.xml"/>
<lib dir="${build.dir}/lib"/>
</war>
</target>
..
..
..
..
示例(使用常春藤)
非常高水平的常春藤及其任务介绍。请参阅下面的“检索”常春藤任务,它提供了您正在寻找的功能
编译文件
..
..
..
..
注释
- “bootstrap”目标设计用于安装ivy(它没有与ANT core打包)
- “cachepath”任务用于创建自定义ANT路径
- “检索”任务使用运行时所需的JAR(由ivy配置管理)填充WAR文件的WEB-INF/lib目录
<ivy-module version="2.0">
<info organisation="com.myspotontheweb" module="demo"/>
<configurations>
<conf name="compile" description="Required to compile application"/>
<conf name="runtime" description="Additional run-time dependencies" extends="compile"/>
<conf name="test" description="Required for test only" extends="runtime"/>
</configurations>
<dependencies>
<!-- compile dependencies -->
<dependency org="org.slf4j" name="slf4j-api" rev="1.7.2" conf="compile->default"/>
<!-- runtime dependencies -->
<dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.2" conf="runtime->default"/>
<!-- test dependencies -->
<dependency org="junit" name="junit" rev="4.10" conf="test->default"/>
</dependencies>
</ivy-module>
您所面临的是多类路径管理。在典型的构建中,至少有4种类型的类路径:
- 编译:代码直接调用的类
- 运行时:代码通过其他类间接调用的类
- 提供的:需要编译的类,但其实现将由目标平台提供
- 测试:测试代码时需要的附加类(如junit),但最终应用程序未附带这些类
<project name="demo" default="build">
<!--
================
File collections
================
-->
<fileset dir="lib" id="compile.files">
<include name="*.jar"/>
<exclude name="slf4j-log4j12.jar"/>
<exclude name="log4j.jar"/>
<exclude name="junit.jar"/>
<exclude name="hamcrest-core.jar"/>
</fileset>
<fileset dir="lib" id="runtime.files">
<include name="*.jar"/>
<exclude name="junit.jar"/>
<exclude name="hamcrest-core.jar"/>
</fileset>
<fileset dir="lib" id="test.files">
<include name="*.jar"/>
</fileset>
<!--
===============
Compile targets
===============
-->
..
..
<target name="compile" depends="init,resolve, resources" description="Compile code">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false" debug="true">
<classpath>
<fileset refid="compile.files"/>
</classpath>
</javac>
</target>
<!--
===============
Distribution targets
===============
-->
..
..
<target name="package" depends="test" description="Create the WAR file">
<copy todir="build/lib">
<fileset refid="runtime.files"/>
</copy>
<war destfile="${war.file}" webxml="${resources.dir}/web.xml">
<fileset dir="${resources.dir}" excludes="web.xml"/>
<lib dir="${build.dir}/lib"/>
</war>
</target>
..
..
..
..
示例(使用常春藤)
非常高水平的常春藤及其任务介绍。请参阅下面的“检索”常春藤任务,它提供了您正在寻找的功能
编译文件
..
..
..
..
注释<