2014-01-20 81 views
0

我正在將Maven 1項目遷移到Maven 3.該作業幾乎完成了一項缺少的任務,我需要的是從pom文件獲取所有依賴項名稱並將它們寫入一個配置文件作爲一個字符串,作業在maven.xml中完成,如下所示:檢查最後5行,將名稱寫入名爲wrapper.conf的文件。將一個ant腳本遷移到Maven3

如何使用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> 

編輯使用編譯類路徑的解決方案運作良好,但我不得不特定於使用Javaservicewrapper其他問題。所以,我發現最好的解決辦法是創造全由appassembler - Maven的插件腳本/ config文件,讓Maven的組裝插件將其複製到conf文件夾

回答

2

如果您需要創建JSW(wrapper.conf),最簡單的解決方案是使用可創建此類文件的appassembler-maven-plugin

+0

tnx我有我只需要配置文件覆蓋wrapper.java.classpath.1變量,並從我的lib文件夾中添加jar路徑 – Spring

+0

還應該使用它嗎?或者你認爲更好的解決方案? – Spring

+0

我會建議使用,如果你可以,因爲它使得maven構建更簡單。只需[詳細查看文檔](http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/usage-jsw.html)。 – khmarbaise

1

看看Maven的Depency插件的build-classpath目標。您可以快速檢查命令行上的結果:

MVN依賴:內置類路徑

您可以使用「prefix」(mdep.prefix)的路徑更改爲dependeny文件屬性

MVN -Dmdep.prefix = myLibFolder依賴性:集結類路徑

你會發現更多的合作文檔中的配置參數,例如outputFile參數;-)

+0

這個插件給出了.m2目錄代表罐子路徑,我需要從我出口我的罐子在發佈包一個lib文件夾中的jar路徑 – Spring

+1

@Spring看一看我的更新(使用'前綴/ mdep.prefix'屬性來改變路徑)。 – FrVaBe

+0

謝謝你的作品!我也改變了分隔符..但是我需要自動化這個,只要我做一個maven構建,而不是運行帶有很多參數的mvn命令,那可能嗎?並將該字符串複製到一個extarnal文件 – Spring