عن طريق إخراج مخضرم المجمع المساعد كمدخل إلى المساعد

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

  •  22-07-2019
  •  | 
  •  

سؤال

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

وحزمة mvn الجمعية: الجمعية

وهذا كله يعمل كبيرة. أريد الآن أن تمرير هذا ملف مضغوط في البرنامج المساعد مخضرم آخر والتي سوف فتحه وإنشاء ملف البيان العرف الذي يسرد محتويات مضغوط ثم قم بإدراج هذا الملف واضح مرة أخرى في ملف مضغوط. كنت قد كتبت البرنامج المساعد للقيام بذلك وأنه يعمل بشكل جيد.

ومشكلتي هو الحصول على هذا البرنامج المساعد تديرها مخضرم كجزء من عملية الإنشاء.

والبرنامج المساعد في حاجة إلى الإخراج من المجمع، ولكن هناك لا يبدو أن أي حال من تشغيل البرنامج المساعد بعد المجمع.

ويمكن لأي شخص أن تساعد؟

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

المحلول

وعلى افتراض أن الجمعية قد تم تعريفها لإنشاء تجميع في الهدف / المجالس، لكم ببساطة الحاجة الى ربط تنفيذ الإضافات إلى مراحل في مستوى دورة حياة ، حتى تتمكن من تشغيل mvn install (على سبيل المثال)، ولها الإضافات المنفذة خلال تلك دورة الحياة.

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <id>generate-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <!--your configuration here -->
          ...
        </configuration>
      </execution>
    </executions>
  </plugin>

وأنت ثم ربط تنفيذ البرنامج المساعد الخاص بك لاحقة لمرحلة (ويقول التكامل للتجارب)، بحيث يكون قادرا على الوصول إلى الملفات التجميع:

  <plugin>
    <groupId>your.plugin.groupId</groupId>
    <artifactId>your-artifactId</artifactId>
    <executions>
      <execution>
        <id>mung-manifests</id>
        <phase>package</phase>
        <goals>
          <goal>your-goal-name</goal>
        </goals>
        <configuration>
          <assemblyDirectory>${project.build.directory}/assemblies</assemblyDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>

وباستخدام هذا النهج سيتم تنفيذ كل المكونات في مرحلة ذات الصلة (حزمة) عند تشغيل mvn package (أو مرحلة لاحقة مثل تثبيت، تحقق، نشر ...).

<القوي> لاحظ أن البرنامج المساعد الخاص بك ينبغي تحديد بعد البرنامج المساعد التجمع لضمان تنفيذه بعد ذلك (لا يهم حول النظام إذا كانوا في مراحل مختلفة، فقط عندما تكون في المرحلة ذاتها).

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