سؤال

نحن نستخدم هدسون و Maven-Breake-Plugin للقيام بالإفراج عن بناء. الآن لدي مشروع يحتوي على المجسم التي تضع جميع المكونات اللازمة، ثم حزمها في حزمة .tar.gz مع بنية الدليل المرجوة.

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

لقد ملتزم بالفعل بهدف التجميع في مرحلة حزمة Maven، ويحصل .tar.gz بناء أثناء الإصدار، ولكن لم يتم تحميلها إلى المستودع. أي تلميحات ما أفعل الخطأ هنا؟

هنا هو تكوين التجميع المساعد:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2-beta-4</version>
    <configuration>
      <descriptors>
        <descriptor>src/main/assembly/distribution.xml</descriptor>
      </descriptors>
      <finalName>${pom.artifactId}-${pom.version}</finalName>
      <appendAssemblyId>false</appendAssemblyId>
      <tarLongFileMode>warn</tarLongFileMode>
    </configuration>
    <executions>
        <execution>
            <id>dist-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>assembly</goal>
            </goals>
        </execution>
    </executions>
</plugin>

الأمر الذي أركضه لبناء إصدار هو

mvn release:prepare release:perform release:clean
هل كانت مفيدة؟

المحلول

وفي الوقت نفسه، وجدت 2 طرق للقيام بما أردت.

يسمح البرنامج المساعد من Maven-Build-Helper-Selper بإضافة إدخالات إضافية إلى قائمة القطع الأثرية التي يجب نشرها:

    <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
         <version>1.3</version>
         <executions>
           <execution>
             <id>attach-distribution</id>
             <phase>package</phase>
             <goals>
               <goal>attach-artifact</goal>
             </goals>
             <configuration>
               <artifacts>
                 <artifact>
                   <file>target/${pom.artifactId}-${pom.version}.tar.gz</file>
                   <type>tar.gz</type>
                 </artifact>
               </artifacts>
             </configuration>
           </execution>
         </executions>
       </plugin>

الآخر بسيط كما يحصل ويشير شخص ما في قائمة البريد الإلكتروني للمستخدم في Maven إلى الخارج. استخدام بسيط الجمعية: هدف واحد بدلا من Asssembly: التجميع. وبهذه الطريقة يتم تحميل قطعة أثرية تم إنشاؤها على المستودع أثناء مرحلة النشر.

    <execution>
        <id>dist-assembly</id>
        <phase>package</phase>
        <goals>
            <goal>single</goal> <!-- that's all :) -->
        </goals>
    </execution>

نصائح أخرى

نشر الملفات ليس جزءا من البرنامج المساعد الإصدار ولكن من المكون الإضافي للنشر (لا يقوم الإصدار بنشر الأشياء في أي مكان في حد ذاته ولكن يمكنك تكوين البرنامج المساعد للنشر الذي سيتم استدعاؤه أثناء الإصدار).

عادة، سيتم نشر البرنامج المساعد نشر جميع القطع الأثرية إلى مستودع عن بعد ولكن التجميعات ليست التحف؛ لا تستطيع Maven استخدام أرشيفات .tar.gz في مستودعها بأي شكل من الأشكال، لذلك لا معنى لها نشرها في المقام الأول.

إذا كنت تصر على نسخ الملفات عديمة الفائدة في المستودع، فيجب عليك استخدامها deploy:deploy-file (انظر المستندات) لنشر ملف يدويا وتكوين البرنامج المساعد مع تنفيذ لاستدعاءه أثناء خطوة الإصدار. لكنني ما زلت ينصح ضدها.

ما تبحث عنه ربما هو وسيلة لتحميل التجمع في مكان ما تلقائيا. أنا لست على علم بجدارة البرنامج المساعد الذي يفعل هذا.

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