2017-06-01 50 views
0

我有Maven項目,其中包含Java類和Windows/Linux腳本。每當我對Java源代碼進行一些更改時,我都會執行'mvn install'並調用這些腳本來測試我的更改。這些腳本因此指向Maven存儲庫以查找JAR。舉例來說,現在在這種情況下如何做MAVEN過濾?

SET app=%M2_REPO%\A\B\C\1.0-SNAPSHOT\C-1.0-SNAPSHOT.jar 
SET app1=%M2_REPO%\E\F\G\1.0-SNAPSHOT\G-1.0-SNAPSHOT.jar 
java -classpath !app!;!app1!;!app2!;!app3! !main_class! %1 %2 %3 %4 

,要求是 1包中的所有jar文件和腳本到一個ZIP文件; 2.在這個ZIP文件中,jar和腳本必須位於根級別。

我只是想知道,如果它可以自動在

app=%M2_REPO%\A\B\C\1.0-SNAPSHOT\C-1.0-SNAPSHOT.jar 

在編譯期設置應用

,並自動將其更改爲

app=C-1.0-SNAPSHOT.jar 

在安裝階段。

如果是的話那怎麼樣?提前致謝。

+0

你爲什麼要手動設置classpath中這樣呢?爲什麼不使用Maven assembly插件來生成一個可執行的JAR +將ZIP中的所有東西封裝起來? – Catchwa

+0

我建議使用[appassembler-maven-plugin](http://www.mojohaus.org/appassembler/appassembler-maven-plugin/)爲linux/windows生成這樣的腳本,而不要自己製作它們。 – khmarbaise

+0

你可以在腳本上使用過濾功能,但是這是壞的壞事。我更喜歡@LOUDKING的方式 – Eric

回答

0

你應該在兩個不同的階段使用Maven的資源 - 插件有兩個獨立的設置文件:

<executions> 
    <execution> 
     <id>compile-settings</id> 
     <phase>process-resources</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <resources> 
       <resource> 
        <directory>something</directory> 
        <filtering>true</filtering> 
       </resource> 
      </resources> 
      <filters> 
       <filter>resources/compile.properties</filter> 
      </filters> 
     </configuration> 
    </execution> 
    <execution> 
     <id>package-settings</id> 
     <phase>package</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <resources> 
       <resource> 
        <directory>something</directory> 
        <filtering>true</filtering> 
       </resource> 
      </resources> 
      <filters> 
       <filter>resources/package.properties</filter> 
      </filters> 
     </configuration> 
    </execution> 
</executions>