2010-02-05 69 views
12

我有三個模塊的Maven構建。如何讓Maven模塊不導出jar?

  • 模塊A輸出一個罐子。
  • 模塊B依賴於A並輸出一個罐子。
  • 模塊C是一組迴歸測試依賴於A和B.

原因迴歸測試不只是模塊B的部分是,他們應該能夠針對A的多個版本運行和B以確保向後兼容。我希望能夠從頂層構建中運行deploy來創建A.jar和B.jar,但不能創建C.jar。這可能嗎?下面

+0

相關:[什麼是避免maven-jar的最好方法?](http://stackoverflow.com/questions/2188746/what-is-the-best-way-to-avoid-maven-jar) – sleske 2015-05-18 13:07:31

回答

7
<properties> 
    <maven.deploy.skip>true</maven.deploy.skip> 
</properties> 

如果你不根本不需要創建JAR,您可能需要添加兩個屬性:

<jar.skipIfEmpty>true</jar.skipIfEmpty> 
<maven.install.skip>true</maven.install.skip> 

請注意,您仍然需要maven.deploy.skip,否則在部署期間構建將失敗。

+0

我冒昧添加了如何禁止創建JAR,以防萬一不需要。 – sleske 2015-05-18 13:02:33

2

用於模塊C:

<packaging>pom</packaging> 
+0

我試過了。然後我從頂層運行mvn測試,而C的測試不運行。 – 2010-02-05 23:25:17

+0

您可能需要重新組織您的POM的層次結構。例如,您可能需要在頂部使用超級pom,然後使用C作爲子模塊,然後使用A和B作爲C下的子模塊。 – 2010-02-05 23:29:48

+0

如果選擇pom的打包類型,則需要手動重新綁定所有常用的插件根據下面的帕斯卡答案。你仍然希望C的jar包裝,你只需要禁用該模塊的部署。薩爾在這裏有正確的答案。 – joelittlejohn 2011-02-23 10:48:08

5

的行家部署插件包含一個skip選項,防止僞像的部署。

<plugin> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <configuration> 
     <skip>true</skip> 
    </configuration> 
</plugin> 

你可以嘗試添加到項目C.

3

使用pom類型的包裝C和重新綁定所有需要的插件:

<project> 
    ... 
    <packaging>pom</packaging> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>test-compile</id> 
      <phase>test-compile</phase> 
      <goals> 
       <goal>testCompile</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>process-test-resources</id> 
      <phase>process-test-resources</phase> 
      <goals> 
       <goal>testResources</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>test</id> 
      <phase>test</phase> 
      <goals> 
       <goal>test</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 
+0

雖然這可能有效,但它相當詳細。 Craig P. Motlin的答案提供了一個更好的解決方案。 – sleske 2015-05-18 13:03:22