2015-02-12 38 views
0

我有一个复制文件夹并创建JAR的任务。使用maven-assembly插件来生成一个jar,但问题是它创建一个文件夹artificat-id +版本我不想创建我需要的,因为我是复制和创建一个jar。复制文件夹并在Maven中创建Jar

<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>concordian</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <!-- Adds the dependencies of our application --> 

    <fileSets> 
     <!-- Adds deploy scripts to the root directory of zip package. --> 
     <fileSet> 
      <directory>${project.build.directory}/concordion</directory> 
      <outputDirectory></outputDirectory> 
      <includes> 
       <include>**/**</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

它最终创建jar文件夹+和任何我从上面的结构复制的文件。我需要删除的文件夹+

+0

为什么你想创建通过Maven的ASSMBLY-插件,而不是行家-JAR-plugin的一个罐子? – khmarbaise 2015-02-12 05:46:31

+0

我正在创建一个罐子,但我需要用一些文件创建一个罐子。 – pradeep 2015-02-12 06:52:08

+0

“有些文件”是什么意思?那么maven-jar-plugin的includes选项呢? – khmarbaise 2015-02-12 07:02:59

回答

0

您可以通过不同的方式做到这一点,与maven-assembly-plugin或与maven-jar-plugin

  1. 随着maven-assembly-plugin必须声明插件的执行在POM和创建你这样的汇编文件,你不需要触摸maven-jar-plugin的配置(除了其他原因):

pom.xml中

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>jar-plus</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <skipAssembly>false</skipAssembly> 
       <descriptors> 
        <descriptor>src/assembly/jar-plus.xml</descriptor> 
       </descriptors> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

这里我把程序集放在文件夹src/assembly,我把它称为jar-plus.xml

大会JAR-plus.xml:

<assembly 
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> 
    <id>jar-plus</id> 
    <formats> 
     <format>jar</format> 
    </formats> 

    <includeBaseDirectory>false</includeBaseDirectory> 

    <fileSets> 
     <fileSet> 
      <outputDirectory>/</outputDirectory> 
      <directory>${project.build.outputDirectory}</directory> 
     </fileSet> 
     <fileSet> 
      <outputDirectory>/</outputDirectory> 
      <directory>src/additionnal-folder</directory> 
     </fileSet> 
    </fileSets> 
</assembly> 

我把只有一个其它附加文件夹,但您可以根据需要并设置包括和排除尽可能多的配置。

  • 随着你必须使该插件的两次执行的maven-jar-plugin
  • 第一执行以产生所述罐,这将是最大的一个与所定义的所有资源与maven-resources-plugin。第二次执行最小的jar文件,你将在其中描述所有的排除项,以避免你不想在最小的jar文件中拥有的文件(我在示例代码中添加了分类器以使两个jar之间的区别但你可以避免为“普通”jar添加分类器)。

    pom.xml中

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-jar-plugin</artifactId> 
        <version>2.6</version> 
    
        <executions> 
         <execution> 
          <id>biggest-jar</id> 
          <phase>package</phase> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
          <configuration> 
           <classifier>biggest</classifier> 
          </configuration> 
         </execution> 
    
         <execution> 
          <id>normal-jar</id> 
          <phase>package</phase> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
          <configuration> 
           <classifier>normal</classifier> 
           <excludes> 
            <exclude>**/*exclude-file*.*</exclude> 
           </excludes> 
          </configuration> 
         </execution> 
        </executions> 
    
        <configuration> 
         <includes> 
          <include>**/*.*</include> 
         </includes> 
        </configuration> 
    </plugin> 
    
    相关问题