Saya menggunakan maven untuk membangun proyek multi modul. Modul 2 saya bergantung pada src Modul 1 di ruang lingkup kompilasi dan pengujian modul 1 dalam lingkup pengujian.
Modul 2 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
Ini bekerja dengan baik. Katakanlah modul saya 3 bergantung pada src Module1 dan tes pada waktu kompilasi.
Modul 3 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>compile</scope>
</dependency>
Ketika saya menjalankan mvn clean install
, build saya berjalan hingga modul 3, gagal di modul 3 karena tidak dapat menyelesaikan ketergantungan uji modul 1. Kemudian saya melakukan mvn install
di modul 3 sendiri, kembali dan menjalankan mvn install
pom orang tua saya untuk membuatnya. Bagaimana cara memperbaikinya?
maven-2
maven-plugin
pengguna209947
sumber
sumber
Jawaban:
Saya ragu tentang apa yang Anda coba lakukan, tetapi saya akan menganggap Anda ingin menggunakan kembali tes yang telah Anda buat untuk proyek (module1) di proyek lain. Seperti yang dijelaskan dalam catatan di bagian bawah Panduan untuk menggunakan tes terlampir :
Jadi, pertama-tama, untuk mengemas pengujian terkompilasi dalam JAR dan menerapkannya untuk digunakan kembali secara umum, konfigurasikan
maven-jar-plugin
berikut ini:<project> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.2</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Kemudian, instal / terapkan artefak JAR pengujian seperti biasa (menggunakan
mvn install
ataumvn deploy
).Terakhir, untuk menggunakan JAR pengujian, Anda harus menentukan dependensi dengan tipe yang ditentukan
test-jar
:<project> ... <dependencies> <dependency> <groupId>com.myco.app</groupId> <artifactId>foo</artifactId> <version>1.0-SNAPSHOT</version> <type>test-jar</type> <scope>test</scope> </dependency> </dependencies> ... </project>
sumber
Mengenai komentar saya untuk pertanyaan Pascals, saya pikir saya telah menemukan jawaban yang sesuai:
<plugins> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.2</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> <phase>test-compile</phase> </execution> </executions> <configuration> <outputDirectory>${basedir}\target</outputDirectory> </configuration> </plugin> </plugins>
Perbedaan utama di sini seperti yang Anda lihat di sini adalah
<phase>
tagnya.Saya akan membuat test-jar dan itu akan tersedia dalam fase kompilasi tes dan tidak hanya setelah fase paket.
Bekerja untuk saya.
sumber
Seperti yang dikatakan https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html :
Silakan baca artikel itu untuk detailnya.
sumber