2014-09-30 102 views
3

我有一个multimodule项目,并且试图在SubProject2中生成一个组合文件,其中包含一些类以及一些在SubProject1中定义的DTO。但是,Proc.jar文件只包含Proc.class和com \ myproy \ spr \ dto * .class,而SubProject1的文件(com \ myproy \ dto * .class)不包含在内,因此无法提供使其工作的方法。Maven Assembly Plugin - 包含来自另一个模块的类

项目的布局:

Parent 
|-pom.xml 
| 
SubProject1 
|-pom.xml 
|-src\main\java\com\myproy\dto 
|-src\main\java\com\myproy\util 
| 
SubProject2 
|-pom.xml 
|-src\assembly\def.xml 
|-src\main\java\com\myproy\spr 
|-src\main\java\com\myproy\spr\dto 

def.xml:

<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>Proc</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
     <fileSet> 
      <directory>target/classes</directory> 
      <includes> 
       <include>com/myproy/spr/Proc.class</include> 
       <include>com/myproy/spr/dto/*.class</include> 
       <include>com/myproy/dto/*.class</include> 
      </includes> 
      <outputDirectory>/</outputDirectory> 
     </fileSet> 
    </fileSets> 
</assembly> 

SubProject2->的pom.xml

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.4.1</version> 
    <executions> 
     <execution> 
      <id>distro-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <descriptors> 
        <descriptor>src/assembly/def.xml</descriptor> 
       </descriptors> 
      </configuration> 
     </execution> 
    </executions> 
</plugin>   
+0

你解决了吗?我有类似的问题 – Meta 2014-12-02 09:40:48

+0

娜,对不起,仍然在寻找一种方法来使它工作。 – codependent 2014-12-03 09:54:40

回答

0

为什么不添加该项目作为JAR依赖?¿。

+0

我不能那样做。关键是我正在生成一个包含要安装在DB2中的DB2存储过程的jar。如果我包含整个jar,那么还应该添加许多其他依赖项。我想仅包含项目类的一小部分 – codependent 2014-09-30 09:44:39

1

如果我理解错误,请纠正我。您需要SubProject1中的某些特定功能。而且你只需要这个功能(不是更多),你不能把整个SubProject1作为依赖项。因此,也许,如果我理解正确,可以在另一个项目(类似于Commons)中提取此功能,并将它作为依赖项添加到SubProject1和SubProject2中。

+0

要清除它:SubProject1是一个Model项目,其中包含Web和服务模块使用的DTO和枚举类。我只想将这些DTO和枚举中的一些放入组合文件中。原因主要是某些DTO包含对我不想/不能包含在组合文件中的库的依赖关系。至于你的建议......我不认为为此创建另一个项目是一个好主意。我最终会得到ParentProject,WebProject,ServiceProject,ModelProject1,ModelProject2 ...我期望有一个干净的方式来直接使用Maven。不管怎么说,还是要谢谢你。 – codependent 2014-09-30 10:37:40

相关问题