2015-02-12 67 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> 
    
    相關問題