Dav*_*ave 101 pom.xml maven-3 maven maven-jar-plugin maven-install-plugin
我在Mac 10.6.6上使用Maven 3.0.3.我有一个JAR项目,当我运行命令"mvn clean install:install"时,我收到错误,
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.3.1:install (default-cli) on project StarTeamCollisionUtil: The packaging for this project did not assign a file to the build artifact -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
这是什么意思,我该如何解决?下面是我的pom.xml.让我知道其他信息会有所帮助,我会编辑这篇文章.谢谢, - 戴夫
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myco.starteam.util</groupId>
<artifactId>StarTeamCollisionUtil</artifactId>
<packaging>jar</packaging>
<name>StarTeam Collision Util</name>
<description>
The StarTeam Collision Utility provides developers and release engineers alike the ability to
compare files attached to a set of CRs to see if conflicts exist in the change set.
</description>
<version>1.0-SNAPSHOT</version>
<url>http://cm-build.myco.com:8080/hudson/view/Tools/job/StarTeamCollisionUtil - TRUNK/</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>myco-sonatype-nexus-snapshots</id>
<name>MyCo Sonatype-Nexus Snapshots</name>
<url>http://sonatype.myco.com/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>starteam</groupId>
<artifactId>starteam</artifactId>
<version>1.1.0</version>
<type>jar</type>
<scope>system</scope>
<systemPath>${basedir}/lib/starteam110.jar</systemPath>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.8.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.0-beta-3</version>
<configuration>
<reportPlugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.7</version>
<configuration>
<linksource>true</linksource>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>1.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.3.1</version>
<reportSets>
<reportSet>
<reports>
<report>index</report>
<report>dependencies</report>
<report>dependency-management</report>
<report>cim</report>
<report>issue-tracking</report>
<report>license</report>
<report>scm</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</reportPlugins>
</configuration>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>sonatype-nexus</id>
<url>http://sonatype.myco.com/nexus/content/repositories/snapshots/</url>
</repository>
</distributionManagement>
<scm>
<url>https://starteam.cmass.myco.com/BorlandStarTeam/BorlandStarTeam.jsp</url>
</scm>
<issueManagement>
<system>StarTeam</system>
<url>https://starteam.cmass.myco.com/BorlandStarTeam/BorlandStarTeam.jsp</url>
</issueManagement>
<ciManagement>
<system>Hudson</system>
<url>http://cm-build.myco.com:8080/hudson/</url>
</ciManagement>
</project>
Run Code Online (Sandbox Code Playgroud)
Jes*_*ebb 151
我不知道这是不是答案,但它可能会引导你朝着正确的方向前进......
该命令install:install实际上是maven-install-plugin的目标.这与installmaven生命周期阶段不同.
Maven生命周期阶段是构建中的某些步骤,某些插件可以将其自身绑定到.当您调用单个生命周期阶段时,可能会执行来自不同插件的许多不同目标.
这归结为命令......
mvn clean install
Run Code Online (Sandbox Code Playgroud)
与...不同
mvn clean install:install
Run Code Online (Sandbox Code Playgroud)
前者将在每个循环中运行所有目标,包括安装(如编译,打包,测试等).后者甚至不会编译或打包你的代码,它只会运行那一个目标.看看异常,这有点意义; 它谈到:
StarTeamCollisionUtil:此项目的包装未将文件分配给构建工件
尝试前者,您的错误可能会消失!
A_D*_*teo 79
TL; DR要解决此问题,请在之前调用打包插件,例如用于jar打包maven-jar-plugin,如下所示:
mvn jar:jar install:install
Run Code Online (Sandbox Code Playgroud)
要么
mvn jar:jar deploy:deploy
Run Code Online (Sandbox Code Playgroud)
如果您确实需要部署.
疑难杂症,如果你有不同的包装(耳朵/战争/ JAR/ZIP)多模块项目这种做法是行不通的-甚至更糟的是,错误的文物将被安装/部署!在这种情况下,使用reactor选项仅构建可部署模块(例如war).
说明
在某些情况下,你真正想要直接在运行install:install或deploy:deploy目标(即从maven-deploy-plugin的deploy目标,而不是Maven的deploy 阶段),您将在恼人的结束The packaging for this project did not assign a file to the build artifact.
一个典型的例子是CI工作(例如Jenkins或Bamboo工作),您需要在不同的步骤中执行/关注不同的方面:
mvn clean install,执行测试和测试覆盖mvn sonar:sonar加上其他选项mvn deploy,因为它将再次执行先前的阶段(并编译,测试)等等)你希望你的构建有效但快速.是的,您可以加快最后一步,至少跳过测试(编译和执行,通过-Dmaven.test.skip=true)或使用特定的配置文件(尽可能多地跳过插件),但是简单地运行它会更容易和清晰mvn deploy:deploy.
在包装阶段,所有人都聚集在一起并置于背景中.有了这个机制,Maven可以确保
maven-install-plugin和maven-deploy-plugin正在复制/上传同一文件集.因此,当您只执行时deploy:deploy,上下文中没有放置文件,也没有任何内容可以部署.
实际上,deploy:deploy需要先前阶段(或之前的插件/目标执行)在构建上下文中放置一些运行时信息.
它还报告了一个潜在的错误::MDEPLOY-158deploy:deploy不仅适用于将工件部署到Maven Remote repo
但后来被拒绝不是问题.
在某些情况下,deployAtEnd配置选项maven-deploy-plugin也无济于事,因为我们有执行的中间作业步骤:
是否应在其自己的部署阶段或多模块构建结束时部署每个项目.如果设置为
true且构建失败,则不会部署任何reactor项目.(实验)
那么,如何解决呢?
只需在类似的第三步/最后一步中运行以下内容:
mvn jar:jar deploy:deploy
Run Code Online (Sandbox Code Playgroud)
该maven-jar-plugin不会再创建任何广口瓶作为构建的一部分,由于其forceCreation选项设置为false默认:
即使没有任何内容似乎已更改,也需要jar插件来构建新的JAR.默认情况下,此插件会查看输出jar是否存在且输入是否未更改.如果这些条件为真,则插件会跳过jar的创建.
但它会很好地填充我们的构建环境并使之deploy:deploy快乐.没有要跳过的测试,没有要添加的配置文件.正是你所需要的:速度.
附加说明:如果您使用的build-helper-maven-plugin,buildnumber-maven-plugin或其他任何类似的插件后,生成的元数据上所使用的maven-jar-plugin(用于清单文件,例如条目),你极有可能不得不联系到执行validate阶段,您仍然想在有他们在jar:jar构建步骤(可是却快速执行).在这种情况下,几乎无害的开销是按以下方式调用validate 阶段:
mvn validate jar:jar deploy:deploy
Run Code Online (Sandbox Code Playgroud)
还有另一个注意事项:如果你没有jar,比如war打包,请war:war在安装/部署之前使用.
疑难杂症如上面所指出的,检查多模块项目的行为.
Ari*_*afa 11
这个回复是一个非常古老的问题,以帮助其他人面对这个问题.
当我Java使用IntelliJ IDEAIDE 处理我的项目时,我遇到了这个失败的错误.
Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-cli) on project getpassword: The packaging for this project did not assign a file to the build artifact
Run Code Online (Sandbox Code Playgroud)
这种失败发生在我选择install:install下方时Plugins - install,如下图中红色箭头所示.
有一次,我跑了选择install下Lifecycle如上图所示,这个问题消失了,我的Maven的安装成功编译版本.
使用 maven-install-plugin 版本 3.0.0-M1(或类似版本)时会出现此错误
正如上面已经提到的,这里也可以使用以下插件版本:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我有同样的问题.我的错误信息不完整.但在我的情况下,我添加了带有源代码的jar.将此代码放在pom.xml中:
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<phase>deploy</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
Run Code Online (Sandbox Code Playgroud)
所以在部署阶段我执行source:jar目标,它生成带有源的jar.并使用BUILD SUCCESS结束部署
| 归档时间: |
|
| 查看次数: |
89052 次 |
| 最近记录: |