كيفية تخطي مرحلة التثبيت في Maven Build إذا قمت بالفعل بتثبيت هذا الإصدار في Repo

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

  •  01-10-2019
  •  | 
  •  

سؤال

لدي مشروع يتكون من 3 مكتبات مختلفة. عندما أقوم بتشغيل برنامج "تثبيت البرنامج النصي" ، يستغرق الأمر جميع المكتبات من REPO وتشغيل MVN Clean تثبيت عليها. لكن هذا الإصدار من المكتبة المثبتة بالفعل في الريبو. هل هناك طريقة لتخطي مرحلة التثبيت إذا كان الإصدار في إصدار POM.xml متساوٍ في ريبو المحلي الخاص بي.

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

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

المحلول

يمكنك تجاوز مثل هذا

-Dmaven.install.skip=true

<profiles>
   <profile>
     <id>skipInstall</id>
     <activation>
       <property>
         <name>maven.install.skip</name>
         <value>true</value>
       </property>
     </activation>
     <build>
       <pluginManagement>
         <plugins>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-install-plugin</artifactId>
             <executions>
               <execution>
                 <id>default-install</id>
                 <phase>none</phase>
               </execution>
             </executions>
           </plugin>
         </plugins>
       </pluginManagement>
     </build>
   </profile>

في الأسبوع الماضي ، قام أوليفييه لامي بتصحيح هذا جيرا.

Minstall-73

نصائح أخرى

يمكن تخطي معظم الإضافات Maven عن طريق تحديد شيء مثل:

        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>X.Y</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>

يمكنك أيضًا إعداد ملفات تعريف بناء لضبط الخصائص واستخدامها لتحديد القيمة. على سبيل المثال ، سيقوم تشغيل الأمر: MVN -Pexample بتحديد ملف تعريف "مثال". ثم يحتوي POM على:

...
  <properties>
    <skip.install>false</skip.install>
...
  </properties>

...
    <profile>
      <id>example</id>
      <properties>
        <skip.install>false</skip.install>
      </properties>
    </profile>
...
    <plugin>
      <artifactId>maven-install-plugin</artifactId>
      <version>X.Y</version>
      <configuration>
        <skip>${skip.install}</skip>
      </configuration>
    </plugin>
...

باستخدام هذه الإضافات POM ، سيكون السلوك الافتراضي لمكون الإضافي للتثبيت هو أداء هدفه الافتراضي ، ولكن إذا تم تحديد ملف تعريف المثال ، فسيتخطى المكون الإضافي للتثبيت هدفه.

باستخدام ما تعلمته من الإجابات الأخرى ، كانت هذه أنظف نتيجة لي.

في بلدي Super POM ، أضفت مكون الإدارة/البرنامج المساعد لتعطيل مراحل الاختبار الافتراضي والاختبار الافتراضي عندما يكون العقار deployOnly تم تعيينه.

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.2</version>
                <executions>
                    <execution>
                        <id>default-install</id>
                        <configuration>
                            <skip>${deployOnly}</skip>
                        </configuration>
                    </execution>
                    <execution>
                        <id>default-test</id>
                        <configuration>
                            <skip>${deployOnly}</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

لذلك على سطر الأوامر ، يمكنني تعطيل مراحل التثبيت واختباره عن طريق الإضافة -DdeployOnly.

mvn clean install       #build and test everything
mvn deploy -DdeployOnly #just deploy it

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

هل أنت متأكد أنك فهمت بشكل صحيح ما تعنيه رئيسه؟ أفسر ما سبق على أنه "لا تثبيت مكتبات أطراف ثالثة في مستودعك المحلي ، استخدم فقط المكتبات المتاحة في المستودعات العامة". هذا يختلف عن "لا تستخدم مستودعك المحلي" وهو أمر مستحيل بشكل أساسي ، وهذا ليس فقط كيف يعمل Maven. سأحاول توضيح هذه النقطة.

بصرف النظر عن ذلك ، لا أحصل على السؤال وهو أمر محير للغاية (ما هو الريبو الذي تتحدث عنه؟ ما الذي يفعله البرنامج النصي للتثبيت؟ لماذا تدعو التثبيت النظيفة على المكتبات؟ إلخ).

تمديد الإجابات الأخرى ، من المستقبل.

المكونات الإضافية Maven لها حرية عالية بشكل مدهش ، كيف تعمل. إذا أرادوا ، فيمكنهم تجاهل/تجاوز إعدادات pom.xml النموذجية. علاوة على ذلك ، أيضا <configuration><skip>true</skip></configuration> مجرد اتفاقية ، لا شيء يلزم المكون الإضافي باتباعه ، إلا أن معظمها تم تطويره.

تجربتي مع عرض المشكلة الحديثة ، ذلك يجب استخدام كل من حل @cemo و miloshboroyevich, ، أيضا المكون الإضافي يتطلب أن يسمح لنا في سلام. والأهم من ذلك ، أن تكوين العمل الوحيد من قبلي هو:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>default-install</id>
            <phase>none</phase>
        </execution>
    </executions>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top