في مشروع Maven ، كيف يمكنني تحديث الإصدار تلقائيًا جميع وحدات الأطفال ، بالإضافة إلى الوالد؟
-
23-09-2019 - |
سؤال
لدي مشروع متعدد الوحدات.
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
- اجعل إصدار جميع المشروع الفرعي محدد في POM.xml الأصل.
تأكد من أن جميع إصدارات المشروعات الفرعية هي نفسها لإصدار والديهم.
<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>
إنشاء pom.xml آخر لتجميع تلك المشروع معا.
<modules> <module>../xyz-parent</module> <module>../module-1</module> <module>../module-2</module> </modules>
ثم قم بتحديث إصدار المشروع الأصل ثم قم بإنشائه حسب الأمر أدناه.
mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT mvn clean install
ثم قم بتحديث إصدار الوالد الذي تم تعريفه في تلك المشرقة الفرعية إلى Latset One
mvn -N versions:update-child-modules
ثم قم ببناءها معًا.
@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 لك.