سؤال
هل من الممكن أن تفعل ؟
البيئة:Multimodule بوم يتكون من 3 وحدات:mm1, mm2 ، مم3.وحدة mm2 وقد mm1 كما التبعية.فمن الممكن لبناء الأم بوم دون أي أخطاء.
السؤال:هل من الممكن لبناء وحدة واحدة mm2 (أي تشغيل مخضرم من mm2 قاعدة الدليل) بدون تثبيت mm1 في مخزن ؟
شكرا
المحلول
دون تركيب التلقائي ، ولكن من الممكن أن نبني فقط المختار المشاريع.تحتاج إلى أن يكون متعدد وحدة بناء (أفترض أنك تفعل).في المفاعل وضع كل الأوامر تحتاج إلى تشغيل من جذر المفاعل.
حتى في حالة:
mvn reactor:make -Dmake.folders=mm2
في هذه الحالة يمكنك بناء mm2 وحدة وحدات التي تعتمد عليها (mm1).
روابط مفيدة:
من كتاب الأمثلة بناء المشروع الوحيد تستمر التبعية له نموذج المشروع.الآخرين المشاريع يمسها مع
mvn reactor:make -Dmake.folders=sample-persist
النص البديل http://www.sonatype.com/books/maven-book/reference/figs/web/running_aro-dependencies.png
أخرى مفيدة الأمر reactor:make-dependents
والتي بناء المشاريع التي تعتمد على X.
نصائح أخرى
ولست متأكدا ما تعنيه بالضبط من قبل "دون تثبيت MM1 إلى مستودع المحلي". هل يعني سابقا لبناء MM2 أو لا؟
في شك، ربما واحدة من خيارات البناء الجديدة التي أعلن عنها في في مخضرم نصائح والخدع متقدم مفاعل خيارات بلوق وظيفة يمكن أن تساعد:
<اقتباس فقرة>وبدءا من مخضرم 2.1 الإفراج عنهم، هناك خط جديد قيادة مخضرم الخيارات التي تسمح لك للتلاعب الطريقة التي مخضرم ستبني مشاريع multimodule. هذه جديدة الخيارات هي:
-rf, --resume-from
Resume reactor from specified project
-pl, --projects
Build specified reactor projects instead of all projects
-am, --also-make
If project list is specified, also build projects required by the list
-amd, --also-make-dependents
If project list is specified, also build projects that depend on projects on the list
اقتباس فقرة>
وأنا أفكر على وجه التحديد إلى خيارات -pl
و-am
. لبناء مجموعة فرعية من الوحدات، تشغيل التالية من الدليل الجذر
$ mvn --projects mm2 --also-make install
ولكن، لست متأكدا من هذا يجيب عن سؤالك (وهي ليست واضحة تماما بالنسبة لي).
وهذا يتعارض مع مبدأ تبعيات Maven2. ما هي الفائدة من يفعل ذلك بالضبط؟
ومع ذلك، يمكننا أن نتصور لتحديد تبعية MM1 من MM2 ك تبعية system
:
<dependency>
<groupId>...</groupId>
<artifactId>mm1</artifactId>
<version>...</version>
<scope>system</scope>
<systemPath>../mm1/target/</systemPath>
</dependency>