في مشروع Maven ، كيف يمكنني تحديث الإصدار تلقائيًا جميع وحدات الأطفال ، بالإضافة إلى الوالد؟

StackOverflow https://stackoverflow.com/questions/2341906

سؤال

لدي مشروع متعدد الوحدات.

parent POM (1.0-SNAPSHOT)
|-- module1 (1.0-SNAPSHOT)
|-- module2 (1.0-SNAPSHOT)
`-- module3 (1.0-SNAPSHOT)

عندما أقوم بتنفيذ إصدار MVN: قم بإعداده تحقق من أن POM POM لديه إصدار لقطة وأن جميع الوحدات التابعة لا تحتوي على إصدار لقطة. كيف تلقائيًا تحديث جميع وحدات الأطفال من لقطة إلى إصدار الإصدار التالي؟

أود تلقائيًا زيادة الإصدار لجميع الوحدات النمطية.

هل كانت مفيدة؟

المحلول

يمكن للمكون الإضافي لإصدار التعامل مع ذلك. هل تحقق تحديث إصدارات POM؟ لكن ... لا أحصل على شيء. تغيير الإصدار في POMS من X-Snapshot إلى إصدار جديد و تصطدم الإصدار في POMS إلى قيمة جديدة y-snapshot يجب أن يتم release:prepare كما أوضح في إعداد إصدار. ما هو الخطأ عند استخدام هذا الهدف؟

تحديث: ال autoVersionSubmodules قد يكون المعلمة ما تبحث عنه. من إعداد إصدار مثال:

مشاريع متعددة الوحدات

ستتم مطالبتك برقم الإصدار لكل وحدة من وحدة المشروع. إذا كنت تفضل أن تحصل كل وحدة على نفس الإصدار مثل POM الأصل ، فيمكنك تعيين الخيار autoVersionSubmodules ل true. الآن سيُطلب منك مرة واحدة فقط للحصول على إصدار الإصدار وإصدار التطوير التالي.

مقتطف من الأصل pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>x.y.z</version>
            <configuration>
                <goals>deploy</goals>
                <autoversionsubmodules>true</autoversionsubmodules>
            </configuration>
        </plugin>
    </plugins>
</build>

نصائح أخرى

طريقة مرنة لضبط إصدارات POMs ، مشاريع متعددة المناطق ، هي ، الإصدارات مافن البرنامج المساعد.

mvn versions:set -DnewVersion=your_new_version

سيقوم بضبط جميع إصدارات POM وإصدارات الوالدين وإصدارات الأطفال في مشروع متعدد الوحدات.

من ثم

mvn versions:commit

أو

mvn versions:revert
  1. اجعل إصدار جميع المشروع الفرعي محدد في POM.xml الأصل.
  2. تأكد من أن جميع إصدارات المشروعات الفرعية هي نفسها لإصدار والديهم.

    <groupId>com.xyz</groupId>
    <artifactId>module-1</artifactId>
    <packaging>jar</packaging>
    
    <parent>
      <groupId>com.xyz</groupId>
      <artifactId>xyz-parent</artifactId>
      <version>1.0.123-SNAPSHOT</version>
    </parent>
    

     

    <?xml version="1.0" encoding="UTF-8"?>
    <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/maven-v4_0_0.xsd">
    
      <modelVersion>4.0.0</modelVersion>
      <artifactId>xyz-parent</artifactId>
      <groupId>com.xyz</groupId>
      <version>1.0.123-SNAPSHOT</version>
      <packaging>pom</packaging>
      <name>xyz-parent</name>
    
      <dependencyManagement>
        <dependencies>
    
        <!-- Message -->
        <dependency>
          <groupId>com.xyz</groupId>
          <artifactId>module-1</artifactId>
          <version>${project.version}</version>
        </dependency>
    
        <dependency>
          <groupId>com.xyz</groupId>
          <artifactId>module-2</artifactId>
          <version>${project.version}</version>
        </dependency>
    
      </dependencyManagement>
    </project>
    
  3. إنشاء pom.xml آخر لتجميع تلك المشروع معا.

    <modules>   
      <module>../xyz-parent</module>
      <module>../module-1</module>
      <module>../module-2</module>      
    </modules>
    
  4. ثم قم بتحديث إصدار المشروع الأصل ثم قم بإنشائه حسب الأمر أدناه.

    mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT
    mvn clean install
    
  5. ثم قم بتحديث إصدار الوالد الذي تم تعريفه في تلك المشرقة الفرعية إلى Latset One

    mvn -N versions:update-child-modules
    
  6. ثم قم ببناءها معًا.

    @echo on
    cd   .\xyz-parent
    call mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT -o
    call mvn versions:commit -o
    call mvn clean install -o
    :::http://www.mojohaus.org/versions-maven-plugin/examples/update-child-modules.html
    cd ..\xyz-buildaggregate-ide
    call mvn -N versions:update-child-modules -o
    call mvn clean install -o
    

هناك خيار أفضل محتمل في https://issues.apache.org/jira/browse/mng-624؟focusedcommentid=14415968&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#4415968

هذا حل بديل لحقيقة أنه لا يمكنك الرجوع إلى POM من المستوى الأعلى في POMs للوحدة الفرعية دون أن يكون هناك إصدار صريح مدرج. (وهو ما يدور حوله Bug Mng-624) ، فهو يشرح كيف يمكنك الحصول على موقع واحد للإصدار (في ملف prelief.xml من المستوى الأعلى) ، وببساطة لديك مراجع خاصية في جميع ملفات pom.xml (أي $ {currentversion})

ومع ذلك ، في إصدار المخطط هذا: من المحتمل ألا يقوم التحضير بتحديث ملفات التعريف. xml لك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top