مراجعة Maven-BuildNumber-Plugin SVN متاحة فقط عند عدم استخدام التنسيق

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

سؤال

أثناء استخدام Maven-Buildnumber-Plugin 1.0 Beta 4 ، يبدو أنه يمكنني الحصول على مراجعة SVN ما لم أستخدم أ <format> علامة داخل التكوين. بمجرد استخدامها <format> و <item>buildnumber</item> علامة ، أحصل على رقم التلقائي التلقائي ، لكنه لم يعد يتوافق مع مراجعة SVN ولا أعرف كيفية استعادته. هل هناك طريقة لاستخدام رقم مراجعة SVN ضمن <format>؟ الوثائق ليست واضحة للغاية.

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

المحلول

إن Buildnenderming-Maven-Plugin غريبة جدًا ، وهذا ربما يكون السبب في أنه لا يزال بيتا. التنسيق هو فقط لتلك العناصر التي ترغب في تطبيق تنسيق رسالة Java على وفي معظم الحالات ، فهو مفيد فقط مع الطوابع الزمنية والسلاسل الحرفية. إذا لم تكن بحاجة إلى طابع زمني ، فلا تستخدم خيار التنسيق عند الحصول على رقم مراجعة التخريب. إذا كنت تستخدم التنسيق ، كما هو الحال مع الإشارة ، فسوف يمنحك رقم بناء يزيد دائمًا بنسبة واحدة بدلاً من رقم إصدار SCM.

إذا كنت بحاجة إلى الطابع الزمني أو لديك عناصر أخرى تستمد من المكون الإضافي لعدد الإنشاء وكذلك مراجعة التخريب ، فقم بكل واحد كإعدام منفصل. فيما يلي مثال على كيفية الحصول على رقم مراجعة Subverison و TimeStamp باستخدام اثنين من عمليات الإعدام المنفصلة للمكون الإضافي:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.0-beta-4</version>
    <executions>
        <execution>
            <id>generate-buildnumber</id>
                <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
            <configuration>
                <useLastCommittedRevision>true</useLastCommittedRevision>
                <buildNumberPropertyName>buildRevision</buildNumberPropertyName>
            </configuration>
        </execution>
        <execution>
            <id>generate-timestamp</id>
            <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
            <configuration>
                <format>{0,date,yyyy-MM-dd HH:mm:ss}</format>
                <items>
                    <item>timestamp</item>
                </items>
                <buildNumberPropertyName>buildDateTime</buildNumberPropertyName>
            </configuration>
        </execution>
    </executions>
</plugin>

مفتاح عمل هذا العمل هو استخدام عنصر BuildNumberTertyName. الخروج من البرنامج المساعد الاستخدام صفحة لمزيد من المعلومات حول فائدة تنسيق رسالة Java.

نصائح أخرى

بمظهره لا. إذا كنت تستخدم تكوين التنسيق ، فأنت ملزم باستخدام أحد العناصر الافتراضية.

من هنا:

حدد رسالة كما هو محدد بواسطة java.text.messageformat. هذا يؤدي إلى قراءة تكوين "العناصر"

ثم من هنا:

حدد العناصر المقابلة لرسالة التنسيق ، كما هو محدد بواسطة java.text.messageformat. قيم العناصر الخاصة هي "Timestamp" و "BuildNumber/D*".

أيضًا إذا نظرت إلى الكود الخاص بـ Mojo هنا يدعم شيئان هذا:

if ( format != null )
{
    if ( items == null )
    {
        throw new MojoExecutionException(
             " if you set a format, you must provide at least one item, "
             + "please check documentation " );
    }

و:

else
{
    // Check if the plugin has already run.
    revision = project.getProperties().getProperty(
        this.buildNumberPropertyName );
    if ( this.getRevisionOnlyOnce && revision != null)
    {
        getLog().debug( "Revision available from previous execution" );
        return;
    }

بأصواتها ، تطلب ميزة جديدة (ليست فكرة سيئة بالمناسبة). أود أن أقدمها على هذا النحو هنا.

لقد واجهت نفس المشكلة وللحظات قليلة اعتقدت أن الحل الذي اقترحه @Jean-rémy Revy Works .. لكن لم يكن ذلك لسبب ما.

اتضح أنهم في Buildning-Maven-Plugin-1.2 لقد أضافوا دعمًا لخاصية خاصة تسمى SCMVersion. اعتبارًا من الآن ، لا يتوفر V1.2 في مستودع Maven على الرغم من أن موقع الويب المكون الإضافي يشير إلى أنه GA. لذلك ستحتاج إلى الخروج من المصدر (http://svn.codehaus.org/mojo/tags/buildnumber-maven-plugin-1.2/) وإنشائه (تثبيت $ mvn). سيؤدي ذلك أيضًا إلى تثبيت البرنامج المساعد في مستودعك المحلي.

بعد هذا فقط افعل هذا:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.2</version>
    <executions>
        <execution>
                <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <format>{0,date,yyyy-MM-dd HH:mm:ss}.{1}</format>
            <items>
                <item>timestamp</item>
                <item>scmVersion</item>
            </items>
        </configuration>

</plugin>

هناك سبب مقنع لأنه تم القيام بذلك من قبل مطور البرنامج المساعد. الطريقة الموصى بها للحصول على الطابع الزمني لبناء المشروع على النحو التالي:

<project>
  <properties>
    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
    <buildDateTime>${maven.build.timestamp}</buildDateTime>    
  </properties>
</project>

لذلك كل ما تحتاجه هو الحصول على رقم مراجعة يمكن القيام به بشكل جيد من خلال احتجاج واحد من buildning-maven-plugin وفقًا لوثائقه.

PS وجود تنفيذ واحد بدلاً من اثنين (كما تم تقديمه) يحفظ بالقرب من ثانية واحدة في كل مرة يتم فيها استدعاء البرنامج المساعد ؛)

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