包在单个zip文件中提供了依赖项

时间:2015-10-19 11:47:46

标签: maven maven-assembly-plugin

我已将依赖项jar放在单独的文件夹中,但期望文件夹应该压缩而不是直接文件夹。我尝试使用汇编描述符,但它创建了具有依赖项的单独文件夹但没有压缩它(文件夹不应该存在,只需要zip文件)。请建议我更好地在单个zip文件中容纳我的依赖jar文件

的pom.xml

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.9</version>

            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <includeScope>provided</includeScope>
                        <outputDirectory>/Users/venugopal/Documents/providedDependencies</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptors>
                    <descriptor>src/assembly/archive_format.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id> <!-- this is used for inheritance merges -->
                    <phase>package</phase> <!-- append to the packaging phase. -->
                    <goals>
                        <goal>single</goal> <!-- goals == mojos -->
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

archive_format.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>bin</id>
  <baseDirectory>/</baseDirectory>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>/Users/vp/Documents/providedDependencies</directory>
    </fileSet>
  </fileSets>
</assembly>

1 个答案:

答案 0 :(得分:1)

如果我理解您的要求,您希望将所有提供的依赖项打包到zip文件中。

你使用maven-dependency-plugin走错了路。您应该使用maven-assembly-plugin及其dependencySet

<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>bin</id>
  <baseDirectory>/</baseDirectory>
  <formats>
    <format>zip</format>
  </formats>
  <dependencySets>
    <dependencySet>
      <scope>provided</scope>
      <outputDirectory>/</outputDirectory>
      <useProjectArtifact>false</useProjectArtifact>
    </dependencySet>
  </dependencySets>
</assembly>

将范围设置为provided将确保在此集合中仅考虑提供的依赖关系。我们需要排除项目工件,否则默认情况下会包含它。