Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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插件3.0.2错误:您必须使用分类器将补充工件附加到项目中,而不是替换它们_Java_Maven_Jar_Maven Jar Plugin - Fatal编程技术网

Java Maven JAR插件3.0.2错误:您必须使用分类器将补充工件附加到项目中,而不是替换它们

Java Maven JAR插件3.0.2错误:您必须使用分类器将补充工件附加到项目中,而不是替换它们,java,maven,jar,maven-jar-plugin,Java,Maven,Jar,Maven Jar Plugin,Maven JAR插件(3.0.2版)不断抛出以下错误,即使只调用了JARgoal: [错误]无法在项目测试中执行目标org.apache.maven.plugins:maven jar plugin:3.0.2:jar(默认):您必须使用分类器将补充工件附加到项目,而不是替换它们。->[帮助1] 这里有一个(最小?pom.xml演示了问题: <project xmlns="http://maven.apache.org/POM/4.0.0"> <modelVersion&

Maven JAR插件(3.0.2版)不断抛出以下错误,即使只调用了
JAR
goal

[错误]无法在项目测试中执行目标org.apache.maven.plugins:maven jar plugin:3.0.2:jar(默认):您必须使用分类器将补充工件附加到项目,而不是替换它们。->[帮助1]

这里有一个(最小?
pom.xml
演示了问题:

<project xmlns="http://maven.apache.org/POM/4.0.0">
  <modelVersion>4.0.0</modelVersion>

  <groupId>test</groupId>
  <artifactId>test</artifactId>
  <version>1.0.0-SNAPSHOT</version>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.2</version>
        <executions>
          <execution>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

4.0.0
测试
,
classifier
只需要在同一目标的多个调用上指定,并且对于
testjar
目标有一个合理的默认值,我不打算更改它

另外,这个问题似乎没有出现在JAR插件的2.x行上。

我错过什么了吗? 谁能告诉我我做错了什么


另外,Maven版本是3.3.9

Jar插件实际上在配置中执行了两次:

<plugin>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.0.2</version>
  <executions>
    <execution>
      <goals>
        <goal>jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>
这意味着插件实际上执行了两次。发生的事情是,Jar插件,在一个包为
Jar
的项目中。此默认执行是日志中提到的,ID为
defaultjar

当您在插件中配置一个
时,您实际上配置了一个新的执行,在那里调用插件的
jar
目标。由于,在
jar
打包固有的默认绑定之后,该执行将在该阶段执行。由于插件已经运行,它失败了,因为再次运行它实际上会替换第一次运行时已经生成的主要工件。此错误是在中插件的3.0.0版本中添加的,因为发生这种情况很可能是错误配置,应该尽早检测到

因此,修复很简单:不需要指定目标的执行,而让默认的执行(来自
jar
打包)完成工作。由于默认执行,即使没有显式配置
JAR
目标,JAR仍然会被创建。如果您还想要一个测试JAR,请使用:


maven jar插件
3.0.2
试验罐

但是请注意,没有指定目标
jar

在我的例子中,我已经将执行的ID设置为默认jar,然后错误就消失了。e、 g

<execution>
    <id>default-jar</id>
    <phase>package</phase>
    <goals>
        <goal>jar</goal>
    </goals>
</execution>

默认jar
包裹
罐子

如果您的日志显示以下内容:

[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ test --
[WARNING] JAR will be empty - no content was marked for inclusion!
在src/main/java中添加一个无用的类似乎可以解决这个问题,请参见:


这“有效”,但基于这样一个事实:将
default jar
作为执行ID覆盖了
jar
打包中的默认执行。这有点像黑客,有一个更好的解决方案。感谢您的解释-尽管我已经将打包设置为“war”(而不是“jar”),但我还是遇到了这个问题,但是删除jar插件中的包修复了这个问题。我只在使用jenkins和linux的环境中的多模块设置中遇到这个错误。在Mac OS机器上运行的东西也在Travis CI环境中运行。似乎还有更多令人沮丧的骗局。我知道错误消息比帮助更让人困惑,它只指向这篇stackoverflow文章。谢谢链接!还提到了调用mvn clean verify deploy的情况,它会执行所有操作,直到验证两次。在我的例子中,mvn干净的安装部署失败了,但mvn干净的部署成功了。(还有一个空罐子。)
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ test --
[WARNING] JAR will be empty - no content was marked for inclusion!