Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven jar插件-快照依赖项的类路径条目错误_Java_Maven_Jar - Fatal编程技术网

Java Maven jar插件-快照依赖项的类路径条目错误

Java Maven jar插件-快照依赖项的类路径条目错误,java,maven,jar,Java,Maven,Jar,我正在使用maven-jar-plugin构建jar,并使用maven-assembly-plugin将所有依赖项放在lib/目录中的jar旁边 如果我在这个项目中使用快照依赖项,那么类路径入口点对该依赖项执行不同的JAR,然后是实际打包的依赖项 以下是一个例子: <dependency> <groupId>x.y.z</groupId> <artifactId>artifact</artifactId> <

我正在使用
maven-jar-plugin
构建jar,并使用
maven-assembly-plugin
将所有依赖项放在
lib/
目录中的
jar
旁边

如果我在这个项目中使用快照依赖项,那么类路径入口点对该依赖项执行不同的
JAR
,然后是实际打包的依赖项

以下是一个例子:

<dependency>
    <groupId>x.y.z</groupId>
    <artifactId>artifact</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
插件:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2.2</version>
        <executions>
            <execution>
                <id>assembly</id>
                <phase>package</phase>
                <goals>
                    <goal>attached</goal>
                </goals>
                <configuration>
                    <outputDirectory>${project.build.directory}</outputDirectory>
                    <finalName>${dist.name}</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptor>${basedir}/assembly.xml</descriptor>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.1</version>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix>lib/</classpathPrefix>
                </manifest>
                <manifestEntries>
                    <Class-Path>.</Class-Path>
                </manifestEntries>
            </archive>
            <outputDirectory>${dist.dir}</outputDirectory>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>test-jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

org.apache.maven.plugins
maven汇编插件
2.2.2
装配
包裹
附属的
${project.build.directory}
${dist.name}
假的
${basedir}/assembly.xml
org.apache.maven.plugins
maven jar插件
2.3.1
真的
解放党/
.
${dist.dir}
试验罐
您遇到的问题,在最新的3.0.2版本中尚未解决。最可能的核心问题是下游库

通过指定Maven Archiver不为快照创建唯一版本,您可以很容易地解决这个问题。这由清单配置下的参数控制,该参数默认为
true
。因此,您可以将Jar插件的配置更改为:

<plugin>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.0.2</version>
  <configuration>
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
        <classpathPrefix>lib/</classpathPrefix>
        <useUniqueVersions>false</useUniqueVersions>
      </manifest>
      <!-- rest of configuration -->
    </archive>
    <outputDirectory>${dist.dir}</outputDirectory>
  </configuration>
  <!-- the executions -->
</plugin>

maven jar插件
3.0.2
真的
解放党/
假的
${dist.dir}

注意,jar插件的版本2.3.1很旧,你应该考虑更新到最新的3.0.2.

这里仍然有3.1.03.2.0也受到影响。
<plugin>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.0.2</version>
  <configuration>
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
        <classpathPrefix>lib/</classpathPrefix>
        <useUniqueVersions>false</useUniqueVersions>
      </manifest>
      <!-- rest of configuration -->
    </archive>
    <outputDirectory>${dist.dir}</outputDirectory>
  </configuration>
  <!-- the executions -->
</plugin>