【问题标题】:How to use an external lib/dependency in ant maven task?如何在 ant maven 任务中使用外部库/依赖项?
【发布时间】:2014-11-20 17:06:34
【问题描述】:

我目前有一个调用 ant 任务来运行的 Maven 构建。这个 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>

我知道我可以将 &lt;dependencies&gt; 定义为我的插件 def 的一部分,但不确定如何重新定义我的 taskdef 以指向依赖项与 rar jar 文件。

【问题讨论】:

    标签: java maven ant


    【解决方案1】:

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

            <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

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

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 2015-07-26
      • 2016-11-03
      • 2014-08-10
      • 2014-05-25
      • 2011-11-07
      • 1970-01-01
      • 2012-01-02
      • 2014-11-12
      相关资源
      最近更新 更多