2014-01-20 163 views
0

我使用Maven構建我的MyProject。還有其他幾個項目被用作'MyProject'的圖書館項目。如何在最終jar中僅包含一個依賴項目類

的pom.xmlMyProject,我所定義的那些庫項目作爲MyProject依賴性。一個圖書館項目被命名爲 「OneLibProject」:

<dependency> 
    <groupId>com.xxx.OneLibProject</groupId> 
    <artifactId>OneLibProject</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <type>jar</type> 
</dependency> 
<dependency> 
    ... 
</dependency> 

MyProject根路徑,我運行後:maven clean install一個MyProject.jar產生。但是在庫項目(依賴關係)中定義的那些類不包括在此MyProject.jar

每個圖書館項目也都有自己的pom &可以自己生成jar。

現在,我想要做的是我想在「MyProject」我的pom.xml進行配置,以便生成的MyProject.jar文件中包含的OneLibProject的類和MyProject類。 不包括其他圖書館項目類別

如何實現這一目標?

+0

google jar -with-dependencies – vikingsteve

+1

pos dup http://stackoverflow.com/questions/17674784/maven-plugin-to-create-executable-jar-with-dependencies-not-unpacked-jar-with-j –

+0

@BenjaminDale雖然沒有答案被真正接受。但是爲我的評論增加一些價值 - 如果你有一個戰爭項目,maven提供了[創建皮包骨頭的war文件的方法](http://maven.apache.org/plugins/maven-war-plugin/examples/skinny -wars.html) –

回答

1

您可以使用maven-assembly-plugin並配置哪些依賴包含在jar中的程序集描述符的dependencySet部分。

假設您有項目y和z。這個插件添加到y的POM

 <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <descriptor>src/main/assembly/assembly.xml</descriptor> 
      </configuration> 
     </plugin> 

地方本assembly.xml在SCR /主/裝配

<assembly 
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 
    <id>jar-with-dependencies</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
     <dependencySet> 
      <outputDirectory>/</outputDirectory> 
      <useProjectArtifact>true</useProjectArtifact> 
      <unpack>true</unpack> 
      <scope>runtime</scope> 
      <includes> 
       <include>test:y</include> 
       <include>test:z</include> 
      </includes> 
     </dependencySet> 
    </dependencySets> 
</assembly> 

Z軸運行mvn install

運行mvn包組裝:組裝y中

如果全部正確,您將在目標文件夾中獲得y-0.0.1-SNAPSHOT-jar-with-dependencies.jar。它只包含y和x類。

+0

請你能提供一個樣本嗎? –

+0

好的,看我的更新 –

+0

我把所有依賴關係的類都包含在一個jar中,這不是我想要的。我只需要包含一個依賴類。 –

相關問題