Używam Maven 3.0.3 na Macu 10.6.6. Mam projekt JAR i po uruchomieniu polecenia „mvn clean install: install” pojawia się błąd,
[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]
Co to oznacza i jak mogę to naprawić? Poniżej znajduje się mój pom.xml. Daj mi znać, jakie inne informacje byłyby pomocne, a zmodyfikuję ten post. Dzięki, - 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 Aby rozwiązać ten problem, wywołaj wcześniej wtyczkę pakowania, np. Do
jar
użycia w pakieciemaven-jar-plugin
, w następujący sposób:Lub
Jeśli faktycznie musisz wdrożyć.
Gotcha To podejście nie zadziała, jeśli masz projekt wielomodułowy z różnymi pakietami (ear / war / jar / zip) - co gorsza, zostaną zainstalowane / wdrożone niewłaściwe artefakty! W takim przypadku użyj opcji reaktora, aby zbudować tylko moduł do rozmieszczania (np.
war
).Wyjaśnienie
W niektórych przypadkach rzeczywiście chcesz uruchomić bezpośrednio
install:install
lubdeploy:deploy
cel (czyli odmaven-deploy-plugin
Thedeploy
cel, a nie Mavendeploy
faza ) i skończy się irytująceThe packaging for this project did not assign a file to the build artifact
.Klasycznym przykładem jest zadanie CI (np. Praca Jenkinsa lub Bamboo), w której na różnych etapach chcesz wykonać / dbać o różne aspekty:
mvn clean install
wykonanie testów i pokrycie testówmvn sonar:sonar
Plus dodatkowe opcjemvn deploy
, ponieważ ponownie wykonałby poprzednie fazy (i skompilował, przetestował itp.) i chcesz, aby Twoja kompilacja była skuteczna, ale jednocześnie szybka .Tak, możesz przyspieszyć ten ostatni krok przynajmniej pomijając testy (kompilację i wykonanie, przez
-Dmaven.test.skip=true
) lub grać z określonym profilem (aby pominąć jak najwięcej wtyczek), ale wtedy jest o wiele łatwiejsze i przejrzyste, aby po prostu uruchomićmvn deploy:deploy
.Ale to się nie powiedzie z powyższym błędem, ponieważ jak również określono w FAQ wtyczki :
Rzeczywiście,
deploy:deploy
potrzebne są pewne informacje dotyczące środowiska uruchomieniowego umieszczone w kontekście kompilacji przez poprzednie fazy (lub poprzednie wykonania wtyczek / celów).Zgłoszono również jako potencjalny błąd::
MDEPLOY-158
wdrażanie: wdrażanie nie działa tylko w przypadku wdrażania artefaktu w repozytorium Maven RemoteAle potem odrzucony jako nie problem.
Opcja
deployAtEnd
konfiguracjimaven-deploy-plugin
nie pomoże w niektórych scenariuszach, ponieważ mamy do wykonania pośrednie kroki zadania:Jak więc to naprawić?
Po prostu uruchom następujące w podobnym trzecim / ostatnim kroku:
maven-jar-plugin
Nie będzie ponownie utworzyć dowolną słoik jako część swojej produkcji, dzięki swoimforceCreation
zestawie opcjafalse
domyślnie:Ale ładnie wypełni nam kontekst kompilacji i
deploy:deploy
uszczęśliwi. Brak testów do pominięcia, brak profili do dodania. Dokładnie to, czego potrzebujesz: szybkość.Dodatkowa uwaga: jeśli za pomocą
build-helper-maven-plugin
,buildnumber-maven-plugin
lub dowolny inny podobny plugin do generowania metadanych później wykorzystywane przezmaven-jar-plugin
(np wpisy do pliku manifestu), to najprawdopodobniej masz egzekucje związane zvalidate
fazą i nadal chcesz mieć je podczasjar:jar
etapu budowy (i jeszcze utrzymać szybki wykonanie). W tym przypadku prawie nieszkodliwym narzutem jest wywołanievalidate
fazy w następujący sposób:Jeszcze jedna dodatkowa uwaga: jeśli nie masz,
jar
ale powiedzmy,war
pakujesz, użyjwar:war
zamiast tego przed instalacją / wdrożeniem.Gotcha, jak wskazano powyżej, sprawdź zachowanie w projektach wielomodułowych.
źródło
Ta odpowiedź dotyczy bardzo starego pytania, aby pomóc innym w obliczu tego problemu.
Napotykam ten błąd podczas pracy nad
Java
projektem przy użyciuIntelliJ IDEA
IDE.to się nie powiodło, gdy wybieram
install:install
poniżejPlugins - install
, jak wskazano czerwoną strzałką na poniższym obrazku.Po uruchomieniu wybranego
install
poniżej,Lifecycle
jak pokazano powyżej, problem zniknął, a kompilacja kompilacji mavena zakończyła się pomyślnie.źródło
Mam ten sam problem. Komunikat o błędzie nie jest kompletny. Ale w moim przypadku dodałem słoik generacji ze źródłami. Umieszczając ten kod w pom.xml:
Tak więc w fazie wdrażania wykonuję cel source: jar, który tworzy jar ze źródłami. Wdrożenie kończy się SUKCESEM BUDOWY
źródło
musisz wyczyścić plik docelowy, taki jak w jar i inne W C: dysk folder w .m2 zobacz lokalizację, w której jest zainstalowany i usuń plik .jar, plik Snaphot i usuń pliki docelowe, a następnie wyczyść znalezioną aplikację, która zostanie uruchomiona
źródło
Ten błąd pojawia się podczas korzystania z wtyczki maven-install-plugin w wersji 3.0.0-M1 (lub podobnej)
Jak już wspomniano powyżej, a także tutaj działa następująca wersja wtyczki:
źródło
Podczas gdy odpowiedź @ A_Di-Matteo działa dla nie multimodułów, mam rozwiązanie dla multimodułów.
Rozwiązaniem jest nadpisanie każdej konfiguracji wtyczki tak, aby wiązała się z fazą
none
z wyjątkiem wtyczki jar / war / ear i oczywiście wtyczki do wdrażania. Nawet jeśli masz pojedynczy moduł, moje podstawowe testy pokazują, że jest to trochę szybsze (z powodów, których nie znam) pod względem wydajności.Tak więc sztuczka polega na utworzeniu profilu, który wykonuje powyższe czynności, który jest aktywowany tylko wtedy, gdy chcesz wdrożyć.
Poniżej znajduje się przykład z jednego z moich projektów, który korzysta z wtyczki cieniowania i dlatego musiałem ponownie zastąpić wtyczkę jar, aby nie nadpisywać:
Teraz, jeśli uruchomię
mvn deploy -Pdeploy
, uruchomi tylko jar i wdroży wtyczki.Aby dowiedzieć się, które wtyczki należy zastąpić, należy uruchomić wdrożenie i przejrzeć dziennik, aby sprawdzić, które wtyczki są uruchomione. Upewnij się, że
id
śledzisz konfigurację wtyczki, która jest połączona z nazwą wtyczki.źródło
Miałem ten sam problem, ale początkowo wykonałem instalację mvn (nie instaluj: zainstaluj, jak wspomniano wcześniej).
Rozwiązanie ma obejmować:
Do sekcji zarządzania wtyczkami.
źródło