Я использую Maven 3.0.3 на Mac 10.6.6. У меня есть проект 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]
Что это значит и как это исправить? Ниже мой 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>
TL; DR Чтобы решить эту проблему, перед запуском модуля упаковки, например, для
jar
использования упаковкиmaven-jar-plugin
, выполните следующие действия:Или
Если вам действительно нужно было развернуть.
Попался Этот подход не сработает, если у вас есть многомодульный проект с разной упаковкой (ear / war / jar / zip) - что еще хуже, будут установлены / развернуты неправильные артефакты! В таком случае используйте параметры реактора только для сборки развертываемого модуля (например,
war
).объяснение
В некоторых случаях вы действительно хотите работать непосредственно
install:install
илиdeploy:deploy
цель (то есть, отmaven-deploy-plugin
, тоdeploy
цель, а не Mavendeploy
фаза ) , и вы бы в конечном итоге в раздражающий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
.Но это приведет к ошибке с указанной выше ошибкой, потому что, как также указано в FAQ по плагину :
Действительно,
deploy:deploy
требуется некоторая информация времени выполнения, помещенная в контекст сборки предыдущими фазами (или предыдущими исполнениями плагинов / целей).Он также сообщил о потенциальной ошибке::
MDEPLOY-158
deploy: deploy не работает только для развертывания артефакта в репозиторий Maven Remote.Но потом отклонили как не проблема.
Параметр
deployAtEnd
конфигурацииmaven-deploy-plugin
не поможет ни в некоторых сценариях, потому что нам нужно выполнить промежуточные шаги задания:Итак, как это исправить?
Просто выполните следующее на таком похожем третьем / последнем шаге:
Не
maven-jar-plugin
будет повторно создавать банку как часть вашей сборки, благодаря егоforceCreation
опции, установленнойfalse
по умолчанию:Но он прекрасно заполнит для нас контекст сборки и
deploy:deploy
порадует. Никаких тестов, которые нужно пропустить, никаких профилей, которые нужно добавить. Именно то, что вам нужно: скорость.Дополнительное примечание: если вы используете
build-helper-maven-plugin
,buildnumber-maven-plugin
или любой другой подобный плагин для генерации мета-данные в дальнейшем используютсяmaven-jar-plugin
(например , записи в файле манифеста), вы, вероятно, расстрелы , связанные сvalidate
фазой , и вы все еще хотите иметь их в течениеjar:jar
шаг сборки (и все же сохранить быстрое выполнение). В этом случае почти безобидные накладные расходы будут вызывать следующуюvalidate
фазу :Еще одно дополнительное замечание: если у вас нет,
jar
но, скажем,war
упаковки, используйтеwar:war
вместо этого перед установкой / развертыванием.Попался, как указано выше, проверьте поведение в многомодульных проектах.
источник
Этот ответ на очень старый вопрос, чтобы помочь другим, столкнувшимся с этой проблемой.
Я столкнулся с этой ошибкой, когда работал над своим
Java
проектом с помощьюIntelliJ IDEA
IDE.это не удается, когда я выбираю
install:install
подPlugins - install
, как указано красной стрелкой на изображении ниже.Как только я запустил выбранное
install
ниже,Lifecycle
как показано выше, проблема исчезла, и моя сборка компиляции maven install прошла успешно.источник
У меня такая же проблема. Сообщение об ошибке для меня неполное. Но в моем случае я добавил банку генерации с исходниками. Поместив этот код в pom.xml:
Итак, на этапе развертывания я выполняю цель source: jar, которая создает jar с исходниками. И развертывание заканчивается на СТРОИТЬ УСПЕХ
источник
вы должны очистить целевой файл, например, в jar и другие. В C: переместите свою папку в .m2, посмотрите место, где он устанавливает, и удалите файл .jar, файл Snaphot и удалите целевые файлы, затем очистите приложение, которое вы обнаружили, оно будет запущено
источник
Эта ошибка появляется при использовании maven-install-plugin версии 3.0.0-M1 (или аналогичной)
Как уже упоминалось выше, а также здесь работает следующая версия плагина:
источник
Хотя ответ @ A_Di-Matteo действительно работает для не многомодульных, у меня есть решение для мультимодулей.
Решение состоит в том, чтобы переопределить каждую конфигурацию плагина, чтобы она привязывалась к фазе, за
none
исключением плагина jar / war / ear и, конечно же, плагина развертывания. Мои рудиментарные тесты показывают, что даже если у вас есть один модуль, он немного быстрее (по причинам, которых я не знаю) с точки зрения производительности.Таким образом, уловка состоит в том, чтобы создать профиль, который выполняет вышеуказанное и активируется, когда вы хотите только развернуть.
Ниже приведен пример из одного из моих проектов, в котором используется плагин тени, и поэтому мне пришлось повторно переопределить плагин jar, чтобы не перезаписывать его:
Теперь, если я запустил,
mvn deploy -Pdeploy
он запустит только jar и развернет плагины.Как узнать, какие плагины вам нужно переопределить, - это запустить развертывание и посмотреть в журнале, какие плагины работают. Обязательно следите за
id
конфигурацией плагина, которая стоит после имени плагина.источник
У меня была такая же проблема, но я сначала выполнил mvn install (не install: install, как упоминалось ранее).
Решение должно включать:
В раздел управления плагинами.
источник