Saya menggunakan Maven 3.0.3 di Mac 10.6.6. Saya memiliki proyek JAR dan ketika saya menjalankan perintah "mvn clean install: install", saya mendapatkan kesalahan,
[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]
Apa artinya ini dan bagaimana cara memperbaikinya? Di bawah ini adalah pom.xml saya. Beri tahu saya info lain apa yang bisa membantu dan saya akan mengedit posting ini. Terima kasih, - 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 Untuk memperbaiki masalah ini, aktifkan plugin pengemasan sebelumnya, misalnya untuk
jar
penggunaan pengemasanmaven-jar-plugin
, sebagai berikut:Atau
Jika Anda benar-benar perlu menerapkan.
Gotcha Pendekatan ini tidak akan berfungsi jika Anda memiliki proyek multi-modul dengan paket yang berbeda (ear / war / jar / zip) - lebih buruk lagi, artefak yang salah akan dipasang / disebarkan! Dalam kasus seperti itu, gunakan opsi reactor untuk hanya membangun modul yang dapat diterapkan (misalnya
war
).Penjelasan
Dalam beberapa kasus Anda benar-benar ingin menjalankan secara langsung
install:install
ataudeploy:deploy
tujuan (yaitu, darimaven-deploy-plugin
,deploy
tujuan, bukandeploy
fase Maven ) dan Anda akan berakhir dengan menggangguThe packaging for this project did not assign a file to the build artifact
.Contoh klasik adalah pekerjaan CI (pekerjaan Jenkins atau Bamboo, misalnya) di mana dalam langkah yang berbeda Anda ingin menjalankan / memperhatikan aspek yang berbeda:
mvn clean install
, melakukan tes dan cakupan tesmvn sonar:sonar
ditambah opsi lebih lanjutmvn deploy
, karena itu akan kembali mengeksekusi fase sebelumnya (dan mengompilasi, menguji , dll.) dan Anda ingin bangunan Anda efektif tetapi juga cepat .Ya, Anda dapat mempercepat langkah terakhir ini setidaknya melewatkan tes (kompilasi dan eksekusi, melalui
-Dmaven.test.skip=true
) atau bermain dengan profil tertentu (untuk melewati plugin sebanyak mungkin), tetapi jauh lebih mudah dan jelas untuk menjalankannya sajamvn deploy:deploy
.Tetapi itu akan gagal dengan kesalahan di atas, karena seperti yang ditentukan oleh FAQ plugin :
Memang,
deploy:deploy
membutuhkan beberapa informasi runtime yang ditempatkan dalam konteks build oleh fase sebelumnya (atau eksekusi plugin / goal sebelumnya).Ini juga dilaporkan sebagai bug potensial
MDEPLOY-158
:: deploy: deploy tidak berfungsi hanya untuk Menerapkan artefak ke repo Jarak Jauh MavenTapi kemudian ditolak karena bukan masalah.
The
deployAtEnd
pilihan konfigurasi darimaven-deploy-plugin
tidak akan membantu baik dalam skenario tertentu karena kita memiliki langkah-langkah pekerjaan menengah untuk mengeksekusi:Lantas, bagaimana cara memperbaikinya?
Cukup jalankan yang berikut ini dalam langkah ketiga / terakhir yang serupa:
Ini
maven-jar-plugin
tidak akan membuat ulang jar apa pun sebagai bagian dari build Anda, berkatforceCreation
opsinya yang disetelfalse
secara default:Tapi itu akan mengisi konteks pembangunan dengan baik untuk kita dan membuat
deploy:deploy
bahagia. Tidak ada tes untuk dilewati, tidak ada profil untuk ditambahkan. Yang Anda butuhkan: kecepatan.Catatan tambahan: jika Anda menggunakan
build-helper-maven-plugin
,buildnumber-maven-plugin
atau plugin serupa lainnya untuk menghasilkan meta-data yang nantinya digunakan olehmaven-jar-plugin
(misalnya entri untuk file Manifes), kemungkinan besar Anda memiliki eksekusi yang ditautkan kevalidate
fase dan Anda masih ingin memilikinya selama yangjar:jar
membangun langkah (dan belum menjaga eksekusi cepat). Dalam hal ini overhead yang hampir tidak berbahaya adalah dengan menjalankanvalidate
fase sebagai berikut:Namun catatan tambahan lainnya: jika Anda belum
jar
, katakanlah,war
mengemas, gunakanwar:war
sebelum menginstal / menyebarkan sebagai gantinya.Gotcha seperti yang ditunjukkan di atas, periksa perilaku dalam proyek multi modul.
sumber
Balasan ini adalah pertanyaan yang sangat lama untuk membantu orang lain menghadapi masalah ini.
Saya menghadapi kesalahan yang gagal ini saat saya mengerjakan
Java
proyek saya menggunakanIntelliJ IDEA
IDE.ini gagal terjadi, ketika saya memilih di
install:install
bawahPlugins - install
, seperti yang ditunjukkan dengan panah merah di gambar di bawah ini.Setelah saya menjalankan yang dipilih di
install
bawahLifecycle
seperti yang diilustrasikan di atas, masalah hilang, dan kompilasi instalasi maven saya berhasil dibangun.sumber
Saya memiliki masalah yang sama. Pesan kesalahan untuk saya tidak lengkap. Tetapi dalam kasus saya, saya telah menambahkan toples generasi dengan sumber. Dengan menempatkan kode ini di pom.xml:
Jadi pada tahap deploy saya mengeksekusi source: jar goal yang menghasilkan jar dengan sumber. Dan penerapan diakhiri dengan BUILD SUCCESS
sumber
Anda harus menghapus file target seperti di jar dan lainnya Di C: drive folder Anda di .m2 lihat lokasi tempat menginstal dan hapus file .jar, file Snaphot dan hapus file target kemudian bersihkan aplikasi yang Anda temukan itu akan dijalankan
sumber
Kesalahan ini muncul saat menggunakan maven-install-plugin versi 3.0.0-M1 (atau serupa)
Seperti yang telah disebutkan di atas dan juga di sini versi plugin berikut berfungsi:
sumber
Sementara jawaban @ A_Di-Matteo berfungsi untuk non multimodule, saya punya solusi untuk multimodule.
Solusinya adalah dengan menimpa setiap konfigurasi plugin agar mengikat ke fase
none
kecuali plugin jar / war / ear dan tentu saja plugin deploy. Bahkan jika Anda memiliki satu modul tes dasar saya menunjukkan ini menjadi sedikit lebih cepat (untuk alasan saya tidak tahu) kinerja yang bijaksana.Jadi triknya adalah membuat profil yang melakukan hal di atas yang diaktifkan saat Anda hanya ingin menerapkan.
Di bawah ini adalah contoh dari salah satu proyek saya yang menggunakan plugin shade dan oleh karena itu saya harus mengganti plugin jar untuk tidak menimpa:
Sekarang jika saya menjalankannya
mvn deploy -Pdeploy
hanya akan menjalankan jar dan menerapkan plugin.Bagaimana Anda dapat mengetahui plugin mana yang perlu Anda timpa adalah dengan menjalankan penerapan dan melihat log untuk melihat plugin mana yang sedang berjalan. Pastikan untuk melacak
id
konfigurasi plugin yang merupakan parens setelah nama plugin.sumber
Saya memiliki masalah yang sama tetapi saya menjalankan mvn install pada awalnya (bukan install: install seperti yang disebutkan sebelumnya).
Solusinya adalah memasukkan:
Ke bagian manajemen plugin.
sumber