M2Eclipse - مشاريع الأطفال فجأة لا تستطيع رؤية بعضها البعض

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

سؤال

ليس عنوانًا جيدًا جدًا ، سأحاول أن أشرح.

لقد نجح هذا منذ شهور ، ثم اليوم لسبب غير معروف ، لا يمكن لـ Eclipse حل أي من الواردات من الأشقاء (مشاريع الأقران) ، عندما لم يتغير شيء (حقًا!). لا تحديثات المكوّن الإضافي Eclipse أو Eclipse ، لا توجد تغييرات في رمز المصدر ، ولا تتغير التكوين.

لدي هيكل مشروع قياسي إلى حد ما:

parent_project
-- clild_project_a
---- pom.xml
-- clild_project_b
---- pom.xml
-- child_project_c
---- pom.xml
-- pom.xml (for parent).

الآن يعتمد كل من المشروع A و B على الرمز من ج.

مشروع pom.xml.

  <parent>
    <artifactId>parent_project</artifactId>
    <groupId>com.mydomain.ge</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  ...
  <dependencies>  
    <dependency>
        <groupId>com.mydomain.ge</groupId>
        <artifactId>child_project_c</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>

وفي الوالدين pom.xml:

  <modules>
    <module>child_project_a</module>
    <module>child_project_b</module>
    <module>child_project_c</module>
  </modules>

حتى الآن في Eclipse ، جميع عبارات الاستيراد في Say Project A استيراد من المشروع C:

package com.skillkash.ge.api;
import com.skillkash.ge.dao.AlreadyExistsException;

هذا يعطي:

The import com.skillkash.ge.dao.AlreadyExistsException cannot be resolved.

حاولت follwing:

  • القيام بتنظيف Maven (باستخدام النقر الأيمن-> قم بتشغيل as-> maven clen على جميع الأطفال والآباء.
  • القيام بعمليات تحديث Maven على جميع المشاريع
  • القيام بحزمة Maven في كل مشروع.
  • القيام M2 Maven-> "تحديث تكوينات المشروع" في جميع المشاريع.
  • إعادة تشغيل الكسوف.
  • إعادة تشغيل الكمبيوتر.

ملاحظة 1, ، في Eclipse لدي 4 مشاريع منفصلة ، واحد لكل طفل ، وواحد للوالد. يتم فحص مشاريع الأطفال الثلاثة أيضًا في SVN ، لكن لا يمكنني التحقق بسهولة من مشروع الأصل لأنه يحتوي على مجلدات مشروع الطفل تحتها.
ملاحظة 2, ، أنا أعرف الكثير عن Ant ، لكنني noob في Maven ، لكن لم يكن لديه أي مشاكل معها حتى الآن. على سبيل المثال ، لا توجد فكرة عما إذا كان Maven يخبر Eclipse باستخدام مصدر المشروع المتعثر ، أو إذا كان عليه تجميع الجرة باستمرار في مستودع M2 المحلي ، ويستخدم المشروع التابع ذلك.
ملاحظة 3, ، جميع التبعات الأخرى (الخارجية) على ما يرام.
ملاحظة 4, ، تحقق من أنه تم التحقق من "حل التبعيات من مشاريع مساحة العمل".
ملاحظة 5, ، في حوار Ecipse Java Build Path ، لا يبدو أن مشاريع الأقران التي تعتمد عليها في علامات تبويب "المصدر" أو "المشاريع" أو "المكتبات". تحتوي المكتبات على شجرة فرعية "Maven Depedencips" ، ولكن تحت هذه فقط الجرار الخارجية مثل Log4J.

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

المحلول

هل يعمل إذا قمت بذلك mvn clean install على POM POM من سطر الأوامر بدلاً من Eclipse؟ هذا سوف يستبعد شيئين:

  1. سواء كانت مشكلة الكسوف أم لا
  2. سواء كانت مشكلتك تتعلق باستخدامك باستخدام package بدلاً من install

لقد لاحظت أنك تستخدم هدف حزمة Maven. بشكل عام ، يجب أن تفعل دائمًا mvm clean install بدلاً من mvn clean package للعمل على الجهاز المحلي الخاص بك. إذا لم تستخدم هدف التثبيت ، فلن يتم تثبيت Project C أبدًا على مستودعك المحلي (افتراضيًا في $ hom وب.

إذا فشل ذلك ، اذهب إلى الداخل من $ home/.m2/ropository وتحقق من التثبيت الفعلي. jar/.pom للمشروع ج. سوف يتوافق مسار الدليل مع إحداثيات Maven (مثل com/mydomain/ge/child_project_c/0.0.1-snapshot). تأكد من أن الجرة لديها الفصول التي تتوقعها بداخلها وتأكد من أن POM مثبتة بجانبها تبدو وكأنها واحدة في مستودع المصدر الخاص بك.

نصائح أخرى

لا يمكن تقديم تعليق حتى الآن ، ولكن لا ينبغي أن تقوم M2Eclipse بحل مشاريع مساحة العمل بدلاً من تثبيتها على المستودع المحلي وحلها من هناك؟

اكتشفت ، أن MVN صعب الإرضاء حول ما هو مكتوب في الداخل build.properties! واجهت نفس المشكلة واضطررت إلى الاعتناء بذلك

  1. كلاهما source.. = src/ و output.. = bin/ يتم إدخالها بشكل صحيح.
  2. bin.includes = META-INF,/ و . يتم إدخالها بشكل صحيح.

بعد أن أصلحت هذا ، عمل MVN Clean Install مثل السحر! whaley ، شكرا على التلميح مع $HOME/.m2/repository لقد جلبني في الواقع لرؤية الملفات كانت مفقودة حقًا في الجرة ، بسبب الأسباب المذكورة أعلاه!

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