Maven JAR插件(版本3.0.2)始终抛出以下错误, 即使是对jar
目标的一次调用也是如此:
[错误]在项目测试中无法执行目标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>
调用是公正的mvn package
。
jar
和test-jar
),也会出现此问题。jar
和test-jar
。根据文档,classifier
仅需要在同一目标的多个调用上指定该目标,并且该目标有一个合理的默认值test- jar
,我不打算更改。
另外, 该问题似乎并未出现在JAR插件的2.x行上。
我错过了什么?有人可以建议我做错了吗?
PS 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>
如果使用这样的配置检查日志,将显示以下内容:
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ test ---
[INFO] Building jar: ...\test\target\test-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- maven-jar-plugin:3.0.2:jar (default) @ test ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
表示该插件实际上执行了两次。发生的情况是,在具有打包的项目中的Jar插件jar
具有绑定到package
phase
的默认执行
。此默认执行是ID为的日志中提到的执行default- jar
。
当您配置的<execution>
插件中,您实际配置的新的执行,其中jar
插件的目标是要调用。由于jar
目标默认绑定到package
阶段,因此在jar
打包固有的默认绑定之后,将在那个阶段执行该执行。而且由于该插件已经运行,所以失败了,因为再次运行它实际上会替换第一次运行时已经产生的主要工件。在MJAR-198的插件版本3.0.0中添加了此错误,因为这种情况很可能是错误配置,应尽早检测到。
这样,解决方法很简单:没有执行可指定目标的执行jar
,而让默认目标(来自jar
包装)进行工作。jar
由于默认执行,即使没有明确配置目标,仍将创建JAR
。如果还需要测试JAR,则仍然需要配置插件以执行以下操作:
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
但请注意,jar
未指定目标。
我将脚本中工作的 jsonschema 转换为 YAML 格式,以便使用 swagger 文档。问题是在第8行(-type:字符串)中,swagger显示错误:应该是对象,“项目”必须是对象。 Json模式
问题内容: 我有以下代码: 我想用新内容替换文件中的旧内容。但是,当我执行代码时,将附加文件“ test.xml”,即,我的旧内容被新的“替换”内容所取代。为了删除旧内容而只保留新内容,我该怎么办? 问题答案: 您需要先写入文件的开头,然后再使用(如果要进行就地替换): 另一种方法是读取文件,然后使用再次打开它: 无论是也将改变inode的文件的数量(我测试过两次,一次是与Ubuntu 12.04
如果我用MockBean替换Autowired的话,它是有效的,但我不知道为什么
问题内容: 我正在逐步用React替换一些Backbone视图。 我的React视图: 我需要在其他html元素下方呈现React视图而不替换它们。 我希望我的方法可以替换占位符,而不是插入占位符,以便: 可能导致: 代替: 没有重复出现在Jquery上,有没有正确的方法呢? 问题答案: 您不需要jQuery来解决此问题。 您只需要渲染到临时DIV中并提取内容并替换现有元素即可。我添加了,以便可以
系统检查未发现任何问题(0已沉默)。 您有18个未应用的迁移。您的项目可能无法正常工作,直到您为应用程序应用迁移:admin、auth、contenttypes、sessions。运行'Python Manage.py Migrate'来应用它们。2021年2月17日-19:52:27 Django版本3.1.6,使用设置'felix.settings'启动开发服务器http://127.0.0.
我来自Maven背景,对Gradle非常陌生。以下是上下文。 我有一个图书馆项目 LibraryStarter 需要将其导入到 图书馆用户 项目。 这两个都是spring boot的项目和建筑 无法使用分级分发“https://services.Gradle.org/distributions/gradle-6.6.1-bin.zip”运行分阶段生成操作。生成文件“C:\work\learn\us