Melewati nilai dari Mojo ke pom

Saya sedang mengembangkan plugin maven, saya memiliki parameter bernama "FinalVersion" yang dibuat sebagai @Parameter di Mojo dan nilainya ditetapkan di kelas Mojo. Saya perlu meneruskan "finalversion" ke file pom saya dan menggunakannya sebagai elemen dalam konfigurasi plugin lain. seperti ini:

@Mojo(name = "validate", defaultPhase = LifecyclePhase.COMPILE)
public class VersionValidatorMojo extends AbstractMojo{
    .
    .

    @Parameter(property = "finalVersion")
    private String finalVersion ;

dan saya ingin memiliki sesuatu seperti ini di pom.xml saya

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>custom-maven-release-plugin</artifactId>
                <configuration>
                    <goals>release</goals>
                    <version>finalversion</version>
                </configuration>
            </plugin>

JUGA dalam skenario saya, versi proyek saya ditetapkan oleh pengembang dan tidak didapat dari SCM, plugin mana yang dapat saya gunakan?

Terbaik


person frdsprtrdr    schedule 07.02.2020    source sumber
comment
Menggunakan konfigurasi satu plugin di dalam plugin lainnya secara umum merupakan ide yang buruk...ini akan menggabungkan plugin bersama-sama...Pertanyaannya adalah: Masalah apa yang Anda coba selesaikan? Saya juga akan melihat maven.apache.org/maven-ci-friendly.html   -  person khmarbaise    schedule 07.02.2020
comment
terima kasih @khmarbaise, saya punya satu pengaturan proyek dan saya tidak mendapatkan versi dari CI. Sebenarnya saya memberikan versinya secara manual dan kemudian sedang dihitung dan dikeluarkan sebagai versi final yang harus digunakan di pom lagi.   -  person frdsprtrdr    schedule 13.02.2020


Jawaban (1)


POM Anda harus menggunakan tag finalVersion

            <configuration>
                <finalversion>X.Y</finalversion>
            </configuration>

Berikut ini contoh lengkap lainnya dengan parameter bernama lokasi

        <plugin>
            <groupId>mygroup</groupId>
            <artifactId>myapp</artifactId>
            <version>${project.version}</version>
            <configuration>
                <locations>
                    <param>${basedir}/src/main/resources/db/toBeIncluded</param>
                    <param>${basedir}/src/main/resources/db/migration/upgrade</param>
                </locations>
            </configuration>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>validate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Dalam implementasi Mojo saya, saya telah mendefinisikannya

    @Parameter
    private String[] locations;
person Beppe C    schedule 07.02.2020
comment
Terima kasih tapi saya tidak perlu mengubah versi final di pom saya, saya hanya perlu menggunakannya sebagai masukan untuk plugin lain. sebenarnya saya hanya menyiapkan versi final di mojo saya dan hanya dapat dibaca. ada saran? - person frdsprtrdr; 13.02.2020
comment
Itulah yang saya sarankan, saya telah memberikan contoh berdasarkan kode Anda. Dalam proyek saya, saya memiliki yang berikut ini misalnya ‹plugin› ‹groupId›mygroup‹/groupId› ‹artifactId›myapp‹/artifactId› ‹version›${project.version}‹/version› ‹configuration› ‹locations› ‹param› ${basedir}/src/main/resources/path‹/param› ‹/locations› ‹/configuration› dengan lokasi adalah @Parameter di impl Mojo saya - person Beppe C; 13.02.2020
comment
dan sekarang bayangkan Anda harus menggunakan parameter lokasi di bagian pom.xml Anda, bagaimana kami bisa melakukannya? - person frdsprtrdr; 13.02.2020
comment
Jawabannya sudah saya uraikan, semoga kita semakin dekat - person Beppe C; 13.02.2020