如何在ant maven任务中使用外部lib / dependency?

时间:2014-11-20 17:06:34

标签: java maven ant

我目前有一个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="target\Com-${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文件。

1 个答案:

答案 0 :(得分:2)

经过大量筛选后,我发现我可以做到以下几点。

        <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

希望将来可以帮助其他人。