هل يمكنني تعيين المشروع الإصدار مع buildnumber-مخضرم-البرنامج المساعد ؟
-
22-07-2019 - |
سؤال
أحاول إضافة إس.مراجعة النسخة مشروع مثل بناء عدد لا يمكن أن يبدو للقيام بذلك.جرة بلدي له الاسم الصحيح دورين التعبئة والتغليف ، ولكن المثبتة في بلدي المحلية مستودع وكأن ${buildNumber} هو/كان غير معروف عند إصدار تم تعيين.
أحصل فو-1.0.0-لقطة-${buildNumber} بدلا من فو-1.0.0-لقطة-304
أي فكرة عما أفعله خطأ أو إضافة تنقيح المشروع الإصدار فكرة سيئة ؟ شكرا للمساعدة.
<project>
...
<version>1.0.0-${release.identifier}-${buildNumber}</version>
<properties>
<release.identifier>SNAPSHOT</release.identifier>
</properties>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<executions>
<execution>
<id>useLastCommittedRevision</id>
<goals>
<goal>create</goal>
</goals>
<configuration>
<useLastCommittedRevision>true</useLastCommittedRevision>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
...
</project>
المحلول
المشكلة من جزأين:
أنت تحاول تعيين
buildNumber
في النسخة قبل أن يتم حل لذلك سوف يكون دائما${buildNumber}
بدلا من حلها القيمة.بدلا من محاولة تغيير حيوي الإصدار ، يجب تعيين
buildNumber
فيfinalName
عنصر في البناء.هذا سوف إنشاء القطع الأثرية المقصود اسم في المستودع المحلي.تثبيت البرنامج المساعد سيتم تجاهل
finalName
ونشر ذلك كما1.0.0-SNAPSHOT
بغض النظر, أنا لا أعرف من طريقة لمعالجة ذلك.علىbuildNumber
يضاف إلى الظاهر إذا كان يمكنك تكوين البرنامج المساعد على النحو التالي.لذا التكوين الخاص بك سيكون شيئا مثل:
<version>1.0.0-${release.identifier}</version> ... <build> <finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName> ... </build>
وأود أن تجنب استخدام بناء على الأرقام SNAPSHOT
مشاريع.
مخضرم يوفر SNAPSHOT
الكلمة للدلالة متقلبة المشروع في التنمية النشطة.حتى إذا كنت المرجعية المشروع مع SNAPSHOT
التبعية النسخة مخضرم تلقائيا التحقق من وجود تحديثات على تبعيات في المزامنة.
إذا كنت ثم إضافة بناء عدد نهاية هذا الإصدار سيكون لديك يدويا تحديث تبعيات حتى تفقد أي فائدة من وجود SNAPSHOT
لاحقة.
أنا شخصيا تجنب استخدام بناء الأرقام حيث من الممكن على أي حال.إذا كان لدي لتحديث المشروع مجرد عثرة رقم الإصدار ، أو استخدام لاحقة مثل beta-2
أو RC2
.إذا كنت بحاجة إلى تتبع تنقيح SNAPSHOT
, أنا أنصح مضيفا أن يعبر لذلك يمكنك التحقق من حيث بناء نشأت ، ولكن استخدام معيار SNAPSHOT
لاحقة السماح مخضرم لحل الإصدارات عادة.التكوين أدناه يوضح كيفية إضافة تنقيح البيان.
بقدر التكوين الخاص بك ، فإنه يبدو موافق علي افتراض SCM url إعداد بشكل صحيح.إذا كان لديك أي SCM التكوين في بوم قد تكون المشكلة.
يمكنك تشغيل مع -X
والتحقق من وجود أي الإخراج من المساعد يشير إلى السبب في أنه ليس من وضع العقار ؟
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>0.9.4</version>
<executions>
<execution>
<id>useLastCommittedRevision</id>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.1</version>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Implementation-Build>${buildNumber}</Implementation-Build>
</manifestEntries>
</archive>
</configuration>
</plugin>
نصائح أخرى
هذا إضافة بعد buildnumber-maven-plugin
:
<plugin>
<groupId>io.github.michaldo</groupId>
<artifactId>nashorn-maven-plugin</artifactId>
<version>0.0.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>eval</goal>
</goals>
<configuration>
<script>
$project.artifact.version = "${buildNumber}";
</script>
</configuration>
</execution>
</executions>
</plugin>
و buildNumber
سيتم الاعتراف بها من قبل التعبئة والتغليف و نشر.