2014-01-20 54 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中,这不是我想要的。我只需要包含一个依赖类。 –

相关问题