ส่งต่อคุณค่าจากโมโจสู่ปอม

ฉันกำลังพัฒนาปลั๊กอิน maven ฉันมีพารามิเตอร์ชื่อ "FinalVersion" ซึ่งสร้างเป็น @Parameter ใน Mojo และค่าของมันถูกตั้งค่าในคลาส Mojo ฉันต้องส่ง "finalversion" ไปยังไฟล์ pom ของฉันและใช้เป็นองค์ประกอบในการกำหนดค่าของปลั๊กอินอื่น แบบนี้:

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

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

และฉันต้องการมีสิ่งนี้ใน pom.xml ของฉัน

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

นอกจากนี้ ในสถานการณ์ของฉัน ฉันมีเวอร์ชันโปรเจ็กต์ที่นักพัฒนาตั้งค่าไว้และไม่ได้รับจาก SCM ฉันสามารถใช้ปลั๊กอินใดได้บ้าง

ดีที่สุด


person frdsprtrdr    schedule 07.02.2020    source แหล่งที่มา
comment
โดยทั่วไปแล้ว การใช้การกำหนดค่าของปลั๊กอินหนึ่งภายในอีกปลั๊กอินหนึ่งถือเป็นความคิดที่ไม่ดี...ซึ่งจะรวมปลั๊กอินเข้าด้วยกัน...คำถามคือ: คุณกำลังพยายามแก้ไขปัญหาประเภทใด นอกจากนี้ ฉันจะดู maven.apache.org/maven-ci-friendly.html< /ก>   -  person khmarbaise    schedule 07.02.2020
comment
ขอบคุณ @khmarbaise ฉันมีการตั้งค่าโปรเจ็กต์เดียวและฉันไม่ได้รับเวอร์ชันจาก CI อันที่จริงฉันให้เวอร์ชันด้วยตนเอง จากนั้นจะมีการคำนวณและส่งออกเป็นเวอร์ชันสุดท้ายซึ่งควรใช้ใน pom อีกครั้ง   -  person frdsprtrdr    schedule 13.02.2020


คำตอบ (1)


POM ของคุณควรใช้แท็ก finalVersion

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

นี่เป็นอีกตัวอย่างเต็มที่มีพารามิเตอร์ชื่อสถานที่

        <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>

ในการใช้งาน Mojo ฉันได้กำหนดไว้แล้ว

    @Parameter
    private String[] locations;
person Beppe C    schedule 07.02.2020
comment
ขอบคุณ แต่ฉันไม่จำเป็นต้องเปลี่ยนเวอร์ชันสุดท้ายใน pom ฉันแค่ต้องใช้มันเป็นอินพุตสำหรับปลั๊กอินอื่น อันที่จริงฉันตั้งค่าเวอร์ชันสุดท้ายในโมโจของฉันเท่านั้นและเป็นแบบอ่านอย่างเดียว ข้อเสนอแนะใด ๆ ? - person frdsprtrdr; 13.02.2020
comment
นั่นคือสิ่งที่ฉันแนะนำ ฉันได้ให้ตัวอย่างตามรหัสของคุณ ในโครงการของฉัน ฉันมีสิ่งต่อไปนี้ เช่น ‹plugin› ‹groupId›mygroup‹/groupId› ‹artifactId›myapp‹/artifactId› ‹version›${project.version}‹/version› ‹configuration› ‹locations› ‹param› ${basedir}/src/main/resources/path‹/param› ‹/locations› ‹/configuration› โดยที่สถานที่เป็น @Parameter ใน Mojo impl ของฉัน - person Beppe C; 13.02.2020
comment
และตอนนี้ลองนึกภาพคุณต้องใช้พารามิเตอร์ตำแหน่งของคุณในส่วนของ pom.xml เราจะทำอย่างไร? - person frdsprtrdr; 13.02.2020
comment
ฉันได้อธิบายคำตอบอย่างละเอียดแล้ว หวังว่าเราจะเข้าใกล้มากขึ้น - person Beppe C; 13.02.2020