如何在 ant maven 任务中使用外部库/依赖项



我目前有一个 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

希望这将在未来对其他人有所帮助。

相关内容

  • 没有找到相关文章

最新更新