當前位置:首頁 > 資訊 > info6 > 正文

Maven項目中如何同時Install成JAR和WAR包

發表于: 2017-02-23   作者:chen_fly2011   來源:轉載   瀏覽:
摘要: ?項目背景:項目在一個superpom工程下,有多個平行module,在各級依賴中,有一個module在pom中定義packagewar,但是開發階段,只需要其中的jar包來使用。如果一直使用其war包來開發調試,mavenoverlay會占用較多時間。于是新的需求就是:將這個module同時打包jar和war并intall到本地repository中。開發階段就用jar,部署階段用war。?解決

 

項目背景:

項目在一個super pom工程下,有多個平行module,在各級依賴中,有一個module pom 中定義 package war,但是開發階段,只需要其中的jar包來使用。如果一直使用其 war 包來開發調試,maven overlay 會占用較多時間。于是新的需求就是:將這個module 同時打包 jar war intall 到本地 repository 中。開發階段就用jar,部署階段用war

 解決思路 

使用 maven-jar-plugin ,定義在 phase package 階段同步打 jar 包;然后在 maven install 時,maven 會將這個 module jarwar同時install到本地repository (此動作是自動完成,有幾個就install 幾個,無需配置) 

解決方案:

pom中加入 maven-jar-plugin 2.3.1

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-jar-plugin</artifactId>

    <version>2.3.1</version>

    <executions>

       <execution>

           <id>my-jar</id>

           <phase>package</phase>

           <goals>

              <goal>jar</goal>

           </goals>

           <configuration>

              <classifier>api</classifier>

           </configuration>

       </execution>

    </executions>

</plugin>

其中要注意的是,聲明 classifier 為任何你需要的字符。

 因為這樣可以避免一個問題:如果在 pom 中定義 package war,運行 maven package 后,在項目 target 目錄下成功產生 XX.jar XX.war ,但運行 maven install,卻只把 XX.jar 安裝到 repositoy 中的XX.war,其中內容僅是 jar 包內容,而XX.war 就不install repositoy 了。加入 classifier 后產生: XX-api.jar XX.war,那么maven install 會將這兩個文件同時安裝到本地 repository 中,不會產生上述問題。

后記:

同樣的道理,如果項目定義 package jar,同時需要打包 jar war,應該也可以搭配使用 maven-war-plugin 來達成。 

 

Maven項目中如何同時Install成JAR和WAR包

版權所有 IT知識庫 CopyRight ? 2009-2015 IT知識庫 IT610.com , All Rights Reserved. 京ICP備09083238號
广东25选5开奖结果