与仍然生活在ant构建环境中的客户一起工作(在Windows机器上)。我想在Java程序中使用google-cloud-translate库,但是如果我包含google-cloud-translate的所有依赖项,那么就有40多个jars了,从芭乐、3enbp到joda-time到google-cloud-core,如果我包括依赖项的所有依赖项和可选依赖项,就会有更多的东西。有没有一种简单的方法可以将所有依赖项打包到一个JAR中,这样我只需要build.xml中引用的一个jar文件?
发布于 2018-08-08 07:20:10
如果您绝对需要使用Ant,那么有一个非常简单的选择,尽管它使用了一个不再维护的包:http://maven.apache.org/ant-tasks/index.html
通过Maven Ant任务,您可以在带有<artifact:dependencies>任务的构建中定义一个工件,该工件将被解析到本地存储库以及它自己的所有依赖项。您还可以给它一个filesetId,这样您就可以在该点之后轻松地操作文件:
<project xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<typedef
classpath="lib/maven-ant-tasks.jar"
resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
/>
<target name="resolve-google-cloud-translate-artifacts">
<artifact:dependencies filesetId="google-cloud-translate">
<dependency artifactId="google-cloud-translate" groupId="com.google.cloud" version="1.38.0" />
<remoteRepository id="central" url="https://repo.maven.apache.org/maven2/" />
</artifact:dependencies>
<delete dir="google-cloud-translate.libs" />
<mkdir dir="google-cloud-translate.libs" />
<copy todir="google-cloud-translate.libs">
<fileset refid="google-cloud-translate" />
<flattenmapper />
</copy>
</target>
</project>请注意project元素中的artifact:名称空间定义。没有它,Maven任务将无法工作。
https://stackoverflow.com/questions/51730727
复制相似问题