我有一個產生三種不同的jar文件的項目:Maven:三個罐子在一個項目中。嘗試使用的組件,但沒有得到的pom.xml和pom.properties嵌入在罐子
- 的server.jar:這包含所有類和資源。一個標準瓶子
- Client.jar:這隻包含幾個外部類和沒有資源。
- ServerSDK.jar:包含所有類,資源,測試類和其他配置文件。
我決定在一個項目中做所有三個罐子,所以任何一個源的變化都會產生一個Jenkins構建並一次部署所有三個罐子。我構建了Server.jar作爲我的標準pom.xml
jar。然後,我使用程序集來構建Client.jar和ServerSDK.jar。
我有裝配其他兩個罐子,一切都是我喜歡它的方式的99%,但有一些我想要做的。
- 我們在我們的
MANIFEST.MF
文件中添加了一些條目,以結合Jenkins構建信息和項目信息。 - 在標準Maven jar中,
pom.xml
和pom.properties
被嵌入在META-INF
目錄中。
我通過maven-assembly-plugin
中的<assembly>
配置成功完成的第一個。第二個我似乎無法工作,即使我的配置中<addMavenDescriptor>
設置爲true
。
這裏是我的maven-assembly-plugin
節我pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
<manifestSections>
<manifestSection>
<name>Build-Information</name>
<manifestEntries>
<Project-Name>${env.JOB_NAME}</Project-Name>
<Build-Number>${env.BUILD_NUMBER}</Build-Number>
<SVN-Revision>${env.SVN_REVISION}</SVN-Revision>
</manifestEntries>
</manifestSection>
<manifestSection>
<name>Module-Information</name>
<manifestEntries>
<Group-ID>${project.groupId}</Group-ID>
<Artifact-ID>${project.artifactId}</Artifact-ID>
<Version>${project.version}</Version>
</manifestEntries>
</manifestSection>
</manifestSections>
</archive>
</configuration>
<executions>
<execution>
<id>Client</id>
<configuration>
<finalName>Client</finalName>
<appendAssemblyId>true</appendAssemblyId>
<descriptors>
<descriptor>src/assembly/client.xml</descriptor>
</descriptors>
</configuration>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
的<manifestSections>
工作得很好,但<addMavenDescriptor>
似乎並不奏效,雖然我已經明確地將它設置爲true
。
據有關maven-archiver-plugin文檔:
無論是創建的存檔將包含這兩個Maven的文件:在
META-INF/maven/${groupId}/${artifactId}/pom.xml
一個 pom.properties
- 的POM文件,位於存檔文件,位於檔案中
META-INF/maven/${groupId}/${artifactId}/pom.properties
默認值爲
true
。
根據maven-assembly-plugin
頁:
<archive>
這是一組到存檔建設者說明,特別是對建築.jar文件。它使您可以爲jar指定一個Manifest文件,以及其他選項。見Maven Archiver參考
有沒有簡單的東西我在這裏失蹤?
嗯,你的配置乍一看看起來是正確的。我會試着去複製一些東西。請注意,不是讓一個項目構建3個JAR,而是將其分解爲多模塊Maven項目的3個模塊。這樣,當任何模塊發生變化時,您仍然需要在Jenkins中構建和部署整個事物,並且這裏推薦使用Maven方法。然後您可以添加第四個模塊進行最終裝配。 – Tunaki
我一直認爲模塊編譯自己的類文件 - 就像耳朵或戰爭。在這裏,所有三個罐子共享相同的類文件。其中兩個使用它們全部,一個使用子集。我將不得不再次閱讀模塊,看看這是如何完成的。 –