将ant脚本迁移到Maven3

时间:2014-01-20 09:53:07

标签: java maven ant

我正在将maven 1项目迁移到maven 3.这项工作几乎完成了一项缺失的任务,我需要的是从pom文件获取所有依赖名称并将它们写入配置文件作为一个字符串,作业如下所示在maven.xml中完成,检查最后5行,它将名称写入名为wrapper.conf的文件

我如何使用Maven3实现这一目标?有没有我可以使用的maven插件,或者我需要在我的pom.xml中使用ant脚本?

<goal name="service">
    <mkdir dir="${maven.build.dir}/grid" />
    <ant:copy todir="${maven.build.dir}/grid">
        <fileset dir="resources/javaservicewrapper" />
    </ant:copy>


    <j:forEach var="lib" items="${pom.artifacts}">
        <j:set var="dep" value="${lib.dependency}"/>
        <j:if test="${dep.getProperty('service.bundle')=='true'}">
            <ant:copy failonerror="true" todir="${maven.build.dir}/grid/lib">
                <fileset dir="${maven.repo.local}/${dep.groupId}/jars">
                    <include name="${dep.artifactId}-${dep.version}.${dep.type}"/>
                    <j:set var="SERVCP" value="../lib/${dep.artifactId}-${dep.version}.${dep.type}:${SERVCP}" />
                </fileset>
            </ant:copy>
        </j:if>
    </j:forEach>

    <attainGoal name="jar" />
    <ant:copy file="target/${maven.final.name}.jar" tofile="${maven.build.dir}/grid/lib/grid.jar" />

    <j:set var="SERVCP" value="${SERVCP}../lib/gridcache.jar" />

    <ant:copy todir="${maven.build.dir}/gridcache/conf" file="resources/javaservicewrapper/conf/wrapper.conf" overwrite="true">
        <filterset begintoken="@" endtoken="@">
            <filter token="service.classpath" value="${SERVCP}"/>
        </filterset>
    </ant:copy>

</goal>

编辑使用build-classpath的解决方案运行良好但我还有其他特定于使用Javaservicewrapper的问题。所以我找到的最佳解决方案是通过appassembler-maven-plugin创建整个脚本/配置文件,并让maven-assembly插件将其复制到conf文件夹

2 个答案:

答案 0 :(得分:2)

如果您需要创建JSW(wrapper.conf),最简单的解决方案是使用可以创建此类文件的appassembler-maven-plugin

答案 1 :(得分:1)

查看Maven Depency插件的build-classpath目标。您可以在命令行上快速检查结果:

  

mvn依赖:build-classpath

您可以使用“prefix”(mdep.prefix)属性更改相关文件的路径

  

mvn -Dmdep.prefix = myLibFolder依赖项:build-classpath

您可以在文档中找到更多配置参数,例如outputFile参数; - )