2015-10-19 15 views
1

我有一個應該構建war文件的maven項目。當我運行mvn clean package我在日誌中看到,起初它使默認戰:在mvn清理包期間只構建WAR一次

--- maven-war-plugin:2.3:war (default-war) @ my-artifact--- 
Packaging webapp 

之後,它使戰爭:

--- maven-war-plugin:2.3:war (war) @ my-artifact--- 
Packaging webapp 

我的pom.xml的樣子:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.my.group</groupId> 
    <version>1.0.0-SNAPSHOT</version> 
    <artifactId>my-artifact</artifactId> 
    <packaging>war</packaging> 

    <dependencies> 
     <...> 
    </dependencies> 

    <build> 
     <finalName>${project.artifactId}</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
          <addClasspath>true</addClasspath> 
         </manifest> 
         <manifestEntries> 
          <Implementation-Build>${project.artifactId}-${project.version}</Implementation-Build> 
          <Build-Time>${timestamp}</Build-Time> 
          <Implementation-Revision>${myapp.revision}</Implementation-Revision> 
          <Implementation-CommittedRevision>${myapp.committedRevision}</Implementation-CommittedRevision> 
          <Implementation-CommittedDate>${myapp.committedDate}</Implementation-CommittedDate> 
         </manifestEntries> 
        </archive> 
        <webXml>src/main/webapp/WEB-INF/web.xml</webXml> 
       </configuration> 
       <executions> 
        <execution> 
         <id>war</id> 
         <phase>package</phase> 
         <goals> 
          <goal>war</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

所以我想要的是禁用建立默認戰爭。

+1

問題很簡單,因爲你已經定義了一個執行塊。結果它運行兩次,導致[默認生命週期包含一個綁定](http://maven.apache.org/ref/3.3.3/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging)。所以你可以簡單地省略你已經完成的執行配置。 – khmarbaise

+0

@khmarbaise。謝謝您的回覆。它的工作原理就如你所說。 –

回答

2

您應該從maven-war-plugin配置中刪除<executions>標記。默認情況下,這個插件將在軟件包階段執行,不需要任何配置。這將是正確的配置:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version> 
    <configuration> 
     <archive> 
      <manifest> 
       <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
       <addClasspath>true</addClasspath> 
      </manifest> 
      <manifestEntries> 
       <Implementation-Build>${project.artifactId}-${project.version}</Implementation-Build> 
       <Build-Time>${timestamp}</Build-Time> 
       <Implementation-Revision>${myapp.revision}</Implementation-Revision> 
       <Implementation-CommittedRevision>${myapp.committedRevision}</Implementation-CommittedRevision> 
       <Implementation-CommittedDate>${myapp.committedDate}</Implementation-CommittedDate> 
      </manifestEntries> 
     </archive> 
     <webXml>src/main/webapp/WEB-INF/web.xml</webXml> 
    </configuration> 
</plugin>