2017-06-17 47 views
2

在我的項目,我有兩個班Test1.javaTest2.java,我的意思是這樣的方式建造兩個罐子是test1.jar應該包含只有Tets1.javatest2.jar應該只包含Tets2.java排斥和融入的Maven Assembly插件不工作

我已經添加在Maven的組裝插件排斥和包容,但似乎沒有工作,在這兩個罐子,我能看到Test1.javaTest2.java

的pom.xml下面

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>build-a</id> 
        <configuration> 
         <excludes> 
          <exclude>Test2.java</exclude> 
         </excludes> 
         <includes> 
          <include>Test1.java</include> 
         </includes> 
         <archive> 
          <manifest> 
           <mainClass>com.example.MyMain</mainClass> 
          </manifest> 
         </archive> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs> 
         <finalName>test1.jar</finalName> 
        </configuration> 
        <phase>package</phase> 
        <goals> 
         <goal>assembly</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>build-b</id> 
        <configuration> 
         <excludes> 
          <exclude>Test1.java</exclude> 
         </excludes> 
         <includes> 
          <include>Test2.java</include> 
         </includes> 
         <archive> 
          <manifest> 
           <mainClass>com.example.MyMain</mainClass> 
          </manifest> 
         </archive> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs> 
         <finalName>test2.jar</finalName> 
        </configuration> 
        <phase>package</phase> 
        <goals> 
         <goal>assembly</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

更新版本(pom.xml中)

中給出
+0

通常罐子包含'.class'文件。 – PeterMmm

+0

@PeterMmm是當我提取jar文件時,我得到了類文件Test1.class和Test2.class –

+0

你可以使用最新版本的pom.xml編輯你的問題,包括@Mureinik的建議嗎? – ToYonos

回答

3

<include><exclude>是路徑元素,所以您需要指定整個路徑(或某些通配符),而不僅僅是文件名。例如:

<excludes> 
    <exclude>**/Test2.*</exclude> 
</excludes> 
<includes> 
    <include>**/Test1.*</include> 
</includes> 
+0

我也試過這個,但仍然當我提取jar文件時,我得到了類文件'Test1.class'和'Test2.class' –

+0

@AlexMan ,包含/排除在源'.java'文件中,而不是'.class'文件。如果你想申請它們,你可以使用'.class'後綴,或者像我在編輯過的答案中那樣使用通配符。 – Mureinik

+0

我試過也還是沒有運氣......,我們需要指定包裝 –

2

您應該使用自定義assembly.xml文件。

test1.jar

例子:

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd"> 
    <id>test1.jar</id> 
    <formats> 
    <format>jar</format> 
    </formats> 
    <fileSets> 
    <fileSet> 
     <directory>src/main/java/</directory> 
     <excludes> 
      <exclude>**/Test2.*</exclude> 
     </excludes> 
     <includes> 
      <include>**/Test1.*</include> 
     </includes> 
    </fileSet> 
    </fileSets> 
</assembly> 

而在你pom.xml取代:

<descriptorRefs> 
    <descriptorRef>jar-with-dependencies</descriptorRef> 
</descriptorRefs> 

有:

<descriptors> 
    <descriptor>assembly.xml</descriptor> 
</descriptors> 
+0

但我有兩個罐子,權利'test1.jar'和'test2。 jar'。當我這樣做時,它會對兩個罐子 –

+0

產生影響。我認爲你需要創建自定義的'assemble.xml'文件。 – ToYonos

+0

文檔:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html – ToYonos