【问题标题】:Maven assembly plugin dependency jars are missing缺少 Maven 程序集插件依赖 jar
【发布时间】:2017-10-09 06:11:13
【问题描述】:

在尝试创建可分发存档时,我在使用 maven 程序集插件时遇到了问题。一切都是 工作正常,除了归档 lib 目录中缺少一些依赖项 jar。比如hamcrest-core.jar、xnio-nio-3.3.6.Final.jar、objenesis-2.5.jar等几个jar都没有加进去。有什么理由不加吗? maven-dependency-plugin 包含了 target/lib 中的所有依赖 jar,没关系。

这是我的 pom.xml 中的内容

  <plugin>
        <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.0.1</version>
    <executions>
        <execution>
            <id>copy</id>
            <phase>install</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>
                    ${project.build.directory}/lib
                </outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <groupId>org.apache.maven.plugins</groupId>
    <version>3.1.0</version>
    <executions>
      <execution>
        <id>online-store</id>
        <phase>package</phase>
        <goals>
            <goal>single</goal>
        </goals>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix>lib/</classpathPrefix>
                    <mainClass>com.online.store.Main</mainClass>
                </manifest>
            </archive>
            <appendAssemblyId>false</appendAssemblyId>
            <descriptors>
                <descriptor>src/assembly/assembly.xml</descriptor>
            </descriptors>
        </configuration>
      </execution>
    </executions>
</plugin>

这是我在 assembly.xml 中的内容

    <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>online-store</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <!-- some file sets -->
    </fileSets>    
    <dependencySets>
        <dependencySet>
        <scope>compile</scope>  
        <includes>
                    <include>*:jar:*</include>
            </includes>
        <outputDirectory>/online-store/lib</outputDirectory>
    </dependencySet>
    </dependencySets>
</assembly>

【问题讨论】:

  • 哪个范围有不包含的依赖项?在程序集文件中,您指出仅提供范围内的那些
  • 这是范围测试。如何更改范围以将它们也包括在内?
  • 您可以在范围测试中包含另一个dependencySet

标签: maven maven-3 maven-plugin


【解决方案1】:

您可以在范围测试中包含另一个dependencySet。

例如:

<assembly> 
    ...
    <dependencySets>
        <dependencySet>
        <scope>compile</scope>  
        <includes>
               <include>*:jar:*</include>
            </includes>
        <outputDirectory>/online-store/lib</outputDirectory>
    </dependencySet>
    <dependencySet>
        <scope>test</scope> 
        <includes>
               <include>*:jar:*</include>
            </includes>
        <outputDirectory>/online-store/lib</outputDirectory>
    </dependencySet>
  </dependencySets>
</assembly>

【讨论】:

    猜你喜欢
    • 2015-09-17
    • 2013-01-13
    • 2016-05-14
    • 2015-05-12
    • 1970-01-01
    • 2012-12-15
    • 2014-12-19
    • 1970-01-01
    • 2011-09-06
    相关资源
    最近更新 更多