我正在将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文件夹
答案 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参数; - )