我目前有一个 Maven 构建,它调用一个 ant 任务来运行。 此 ant 任务依赖于某些外部库。 这些库目前在我的系统中是硬编码的。 我想将这些外部库移动到本地 Maven 存储库并让 maven 从存储库中检索它们,但不确定如何做到这一点。
我当前的任务定义为(为简洁起见,编辑了完整的任务定义):
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<!-- Ant Custom Folder copying plugin -->
<execution>
<id>rename_files</id>
<phase>process-resources</phase>
<configuration>
<tasks>
<taskdef resource="net/sf/antcontrib/antlib.xml" classpath="${env.ANT_HOME}/lib/ant-contrib-1.0b3.jar" />
<taskdef name="stringutil" classname="ise.antelope.tasks.StringUtilTask" classpath="${env.ANT_HOME}/lib/AntelopeTasks_3.4.1.jar" />
<typedef name="trim" classname="ise.antelope.tasks.typedefs.string.Trim" classpath="${env.ANT_HOME}/lib/AntelopeTasks_3.4.1.jar" />
<typedef name="lastindexof" classname="ise.antelope.tasks.typedefs.string.LastIndexOf" classpath="${env.ANT_HOME}/lib/AntelopeTasks_3.4.1.jar" />
<typedef name="substring" classname="ise.antelope.tasks.typedefs.string.Substring" classpath="${env.ANT_HOME}/lib/AntelopeTasks_3.4.1.jar" />
<typedef name="listfiles" classname="ise.antelope.tasks.typedefs.file.FileList" classpath="${env.ANT_HOME}/lib/AntelopeTasks_3.4.1.jar" />
<taskdef name="fileutil" classname="ise.antelope.tasks.FileUtilTask" classpath="${env.ANT_HOME}/lib/AntelopeTasks_3.4.1.jar" />
<!-- CSS -->
<for param="file">
<path>
<fileset dir="targetCom-${project.version}style" includes="*.css" />
</path>
<sequential>
<fileutil file="@{file}" property="fileWithoutPath">
<listfiles includepath="false" />
</fileutil>
</sequential>
</for>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
我知道我可以将<dependencies>
定义为插件 def 的一部分,但不确定如何重新定义我的taskdef
以指向依赖项与 rar jar 文件。
在筛选了很多之后,我想我可以做到以下几点。
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>1.0b3</version>
</dependency>
<dependency>
<groupId>org.tigris.antelope</groupId>
<artifactId>antelopetasks</artifactId>
<version>3.4.1</version>
</dependency>
</dependencies>
<executions>
<!-- Ant Custom Folder copying plugin -->
<execution>
<id>rename_files</id>
<phase>process-resources</phase>
<configuration>
<tasks>
<taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="maven.plugin.classpath" />
<taskdef name="stringutil" classname="ise.antelope.tasks.StringUtilTask" classpathref="maven.plugin.classpath" />
<typedef name="trim" classname="ise.antelope.tasks.typedefs.string.Trim" classpathref="maven.plugin.classpath" />
<typedef name="lastindexof" classname="ise.antelope.tasks.typedefs.string.LastIndexOf" classpathref="maven.plugin.classpath" />
<typedef name="substring" classname="ise.antelope.tasks.typedefs.string.Substring" classpathref="maven.plugin.classpath" />
<typedef name="listfiles" classname="ise.antelope.tasks.typedefs.file.FileList" classpathref="maven.plugin.classpath" />
<taskdef name="fileutil" classname="ise.antelope.tasks.FileUtilTask" classpathref="maven.plugin.classpath" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
只需使用classpathref
并指向任务定义中的maven.plugin.classpath
。
希望这将在未来对其他人有所帮助。