Ich verwende Maven 3.0.3 auf Mac 10.6.6. Ich habe ein JAR-Projekt und wenn ich den Befehl "mvn clean install: install" ausführe, erhalte ich den Fehler:
[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]
Was bedeutet das und wie kann ich das beheben? Unten ist meine pom.xml. Lassen Sie mich wissen, welche anderen Informationen hilfreich wären und ich werde diesen Beitrag bearbeiten. Danke, - Dave
<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>
TL; DR Um dieses Problem zu beheben, rufen Sie das Verpackungs-Plugin vorher auf, z. B. zur
jar
Verwendungmaven-jar-plugin
als Verpackung :Oder
Wenn Sie tatsächlich bereitstellen mussten.
Gotcha Dieser Ansatz funktioniert nicht, wenn Sie ein Projekt mit mehreren Modulen und unterschiedlichen Verpackungen (Ohr / Krieg / Glas / Reißverschluss) haben - noch schlimmer, es werden falsche Artefakte installiert / bereitgestellt! Verwenden Sie in diesem Fall Reaktoroptionen, um nur das bereitstellbare Modul (z
war
. B. das ) zu erstellen .Erläuterung
In einigen Fällen möchten Sie tatsächlich direkt ein
install:install
oder eindeploy:deploy
Ziel ausführen (dh ausmaven-deploy-plugin
demdeploy
Ziel, nicht aus der Maven-deploy
Phase ), und Sie würden in der nervigen Situation endenThe packaging for this project did not assign a file to the build artifact
.Ein klassisches Beispiel ist ein CI-Job (z. B. ein Jenkins- oder Bamboo-Job), bei dem Sie in verschiedenen Schritten verschiedene Aspekte ausführen / pflegen möchten:
mvn clean install
Durchführung von Tests und die Testabdeckungmvn sonar:sonar
plus weiteren Optionenmvn deploy
erneut ausführen, da die vorherigen Phasen erneut ausgeführt (und kompiliert, getestet) werden usw.) und Sie möchten, dass Ihr Build effektiv und dennoch schnell ist .Ja, Sie könnten diesen letzten Schritt beschleunigen, indem Sie zumindest Tests überspringen (Kompilieren und Ausführen, via
-Dmaven.test.skip=true
) oder mit einem bestimmten Profil spielen (um so viele Plugins wie möglich zu überspringen), aber es ist viel einfacher und klarer, siemvn deploy:deploy
dann einfach auszuführen .Aber es würde mit dem obigen Fehler fehlschlagen, da, wie auch in den Plugin-FAQ angegeben :
In der Tat
deploy:deploy
werden einige Laufzeitinformationen benötigt , die von früheren Phasen (oder früheren Plugins / Zielausführungen) in den Build-Kontext gestellt wurden.Es wurde auch als potenzieller Fehler gemeldet ::
MDEPLOY-158
Bereitstellen: Bereitstellen funktioniert nicht nur für das Bereitstellen von Artefakten für Maven Remote RepoAber dann als kein Problem abgelehnt.
Die
deployAtEnd
Konfigurationsoption vonmaven-deploy-plugin
hilft auch in bestimmten Szenarien nicht weiter, da wir Zwischenjobschritte ausführen müssen:Also, wie kann man das beheben?
Führen Sie in einem ähnlichen dritten / letzten Schritt einfach Folgendes aus:
Das
maven-jar-plugin
wird nicht neu erstellen jedes Glas als Teil des Build dank seinerforceCreation
Option auffalse
standardmäßig:Aber es wird den Build-Kontext für uns gut füllen und
deploy:deploy
glücklich machen . Keine Tests zum Überspringen, keine Profile zum Hinzufügen. Genau das, was Sie brauchen: Geschwindigkeit.Zusätzlicher Hinweis: Wenn Sie die verwenden
build-helper-maven-plugin
,buildnumber-maven-plugin
oder andere ähnliche Plug - Meta-Daten zu erzeugen , später durch die verwendetemaven-jar-plugin
(zB Einträge für die Manifest - Datei), Sie höchstwahrscheinlich Ausführungen zu der verknüpften habenvalidate
Phase und Sie wollen immer noch , sie haben während denjar:jar
Build-Schritt (und dennoch eine schnelle Ausführung beibehalten). In diesem Fall besteht der nahezu harmlose Overhead darin, dievalidate
Phase wie folgt aufzurufen :Noch eine weitere zusätzliche Anmerkung: wenn Sie nicht haben ,
jar
sondern, sagen wir,war
Verpackung, Verwendungwar:war
vor der Installation / deploy statt.Gotcha, wie oben erwähnt, überprüfen Sie das Verhalten in Projekten mit mehreren Modulen.
quelle
Diese Antwort bezieht sich auf eine sehr alte Frage, um anderen zu helfen, die mit diesem Problem konfrontiert sind.
Ich habe diesen Fehler festgestellt, als ich
Java
mitIntelliJ IDEA
IDE an meinem Projekt gearbeitet habe .Dies ist fehlgeschlagen, wenn ich
install:install
unter wählePlugins - install
, wie mit dem roten Pfeil im Bild unten gezeigt.Sobald ich das ausgewählte
install
unterLifecycle
wie oben dargestellt ausgeführt habe, ist das Problem behoben und meine Maven-Installation wurde erfolgreich kompiliert.quelle
Ich habe das gleiche Problem. Die Fehlermeldung für mich ist nicht vollständig. Aber in meinem Fall habe ich Generationsglas mit Quellen hinzugefügt. Durch Platzieren dieses Codes in pom.xml:
In der Bereitstellungsphase führe ich das Ziel source: jar aus, das jar mit Quellen erzeugt. Die Bereitstellung endet mit BUILD SUCCESS
quelle
Sie müssen die Zieldatei löschen, z. B. in jar und anderen. In C: Fahren Sie Ihren Ordner auf .m2. Sehen Sie sich den Speicherort an, an dem die JAR-Datei, die Snaphot-Datei installiert und gelöscht werden. Löschen Sie dann die Anwendung, von der Sie festgestellt haben, dass sie ausgeführt wird
quelle
Dieser Fehler tritt auf, wenn Sie das maven-install-plugin Version 3.0.0-M1 (oder ähnliches) verwenden.
Wie oben bereits erwähnt und auch hier funktioniert die folgende Plug-In-Version:
quelle
Während die Antwort @ A_Di-Matteo für Nicht-Multimodule funktioniert, habe ich eine Lösung für Multimodule.
Die Lösung besteht darin, jede Plugin-Konfiguration so zu überschreiben, dass sie
none
mit Ausnahme des jar / war / ear-Plugins und natürlich des Bereitstellungs-Plugins an die Phase von gebunden ist. Selbst wenn Sie ein einzelnes Modul haben, zeigen meine rudimentären Tests, dass dies in Bezug auf die Leistung etwas schneller ist (aus Gründen, die ich nicht kenne).Daher besteht der Trick darin, ein Profil zu erstellen, das die oben genannten Funktionen ausführt und aktiviert wird, wenn Sie nur bereitstellen möchten.
Unten ist ein Beispiel aus einem meiner Projekte, das das Schatten-Plugin verwendet. Daher musste ich das JAR-Plugin erneut überschreiben, um es nicht zu überschreiben:
Wenn ich jetzt starte
mvn deploy -Pdeploy
, wird nur das JAR ausgeführt und Plugins bereitgestellt.Um herauszufinden, welche Plugins Sie überschreiben müssen, müssen Sie die Bereitstellung ausführen und im Protokoll nachsehen, welche Plugins ausgeführt werden. Vergewissern Sie sich, dass Sie
id
die Plugin-Konfiguration nach dem Namen des Plugins im Auge behalten .quelle
Ich hatte das gleiche Problem, aber ich habe mvn install anfangs ausgeführt (nicht install: install wie zuvor erwähnt).
Die Lösung besteht darin, Folgendes einzuschließen:
In den Plugin-Management-Bereich.
quelle