我有一個標準的POM和罐子包裝項目。 標準-jar是這個項目的理想工件。有沒有辦法在maven項目中只使用枚舉或接口創建jar文件?
除了這個項目的所有類的標準jar我只需要創建一個額外的jar與它聲明的枚舉。
如果我能夠生成這個jar在一個不同的artifactId maven標準將是一個加號。
這裏Create several jar files from single project using maven這個問題將是一個很好的起點,但沒有答案
任何想法?
我有一個標準的POM和罐子包裝項目。 標準-jar是這個項目的理想工件。有沒有辦法在maven項目中只使用枚舉或接口創建jar文件?
除了這個項目的所有類的標準jar我只需要創建一個額外的jar與它聲明的枚舉。
如果我能夠生成這個jar在一個不同的artifactId maven標準將是一個加號。
這裏Create several jar files from single project using maven這個問題將是一個很好的起點,但沒有答案
任何想法?
我建議你把你的類分解成兩個maven構件:一個與Enums和Interfaces作爲另一個的依賴關係,它有你的實現。既然每個人都有自己的POM,你就會得到兩個罐子。
最好的選擇是有一個Maven多模塊構建。
通常,它由單個父模塊和多個子模塊組成。
父模塊的包裝應該是「pom」,它只會充當子模塊的容器。
母公司的pom.xml會是這個樣子:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>your groupID</groupId>
<artifactId>artifact</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<name>Name</name>
<modules>
<module>submodule1</module>
<module>submodule2</module>
</modules>
</project>
每個模塊應該是一個子目錄的名稱。這些子目錄將包含他們自己的pom.xml
文件。
請注意,groupId
,artifactId
和version
稍後會用到,因此它們應該是有意義的。
你的兩個子模塊應該像正常jar
包裝POM文件有一些例外:
<parent>
元素指向<groupId>
,<artifactId>
和父模塊的<version>
。雖然本節不是嚴格必要的,但它確實允許您定義父模塊中的通用依賴項。我最終使用配置文件來管理解決方案解決方案。一個管理Maven-jar-plugin插件和其他maven-source-plugin插件。
<profiles>
<profile>
<id>enum</id>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classifier>enum</classifier>
<includes>
<include>**/*Enum**</include>
<!-- or any other way to math my artifacts -->
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>enum-sources</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${mavenSourcePluginVersion}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
<configuration>
<classifier>enum-sources</classifier>
<includes>
<include>**/*Enum**</include>
<!-- or any other way to math my artifacts -->
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
這樣我可以使用
mvn install -Penum
僅與枚舉 和
mvn install -Penum-sources
以生成所述罐子以產生與所述源的廣口瓶中。
包括在其他Maven項目這依賴你只需要指定與分類的配置文件,如
<dependency>
<groupId>${groupId}</groupId>
<artifactId>{artifactId}</artifactId>
<version>${version}</version>
<classifier>enum</classifier>
</dependency>
<dependency>
<groupId>${groupId}</groupId>
<artifactId>{artifactId}</artifactId>
<version>${version}</version>
<classifier>enum-sources</classifier>
</dependency>
只要找到了這個 http://blog.sonatype.com/2010/01/how -to-create-two-jars-from-one-project-and-why-you-shouldnt /#。VnsFVXyrSis與某些命名約定可能有所幫助。 測試選項現在 –
多項目構建是Maven中的一件事情。 – Powerlord