复制文件夹并在Maven中创建一个Jar

时间:2015-02-12 05:43:14

标签: maven maven-assembly-plugin

我有一项任务是复制文件夹并创建一个jar。使用maven-assembly插件生成jar但问题是它创建了一个带有artificat-id + Version的文件夹我不想创建我需要的东西就像我复制并创建一个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以及我从上面的结构中复制的文件。我需要删除文件夹+

1 个答案:

答案 0 :(得分:0)

您可以使用maven-assembly-pluginmaven-jar-plugin以不同方式执行此操作:

  1. 使用maven-assembly-plugin,您必须在pom中声明插件的执行并创建这样的程序集文件,您不需要触摸maven-jar-plugin的配置(除了<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> 由于其他原因):
  2. pom.xml

    src/assembly

    我将程序集放在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>

    程序集jar-plus.xml:

    maven-jar-plugin

    我只添加了一个附加文件夹,但您可以根据需要配置多个文件夹,并设置包含和排除。

    1. 使用maven-resources-plugin,您必须执行两次插件执行:
    2. 生成jar的第一次执行,该jar将是使用<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> 定义的所有资源的最大jar。并且为最小的jar执行第二次执行,在其中您将描述所有排除,以避免您不希望在最小的jar中存在的文件(我在示例代码中添加了分类器,以区分两个罐子,但你可以避免为&#34;普通&#34; jar)添加分类器。

      pom.xml

      var arr1 = [.84, .01, .95, 1, .22, .453, .194, .43];
      var arr2 = [.54, .09, .10, 0, .76, .12, .41, .99];
      var arr3 = [1, .26, .90, .65, .88, .33, .854, .414];
      var arr4 = [.65, .84, .184, .81, .04, .09, 0, .46];
      
      var output = [1, 0, 0, 1, 1, 1, 0, 1];