لماذا كسر المكون الإضافي الكسوف في Maven The Maven Jetty Plugin؟

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

سؤال

أرغب في الحصول على المكون الإضافي ل Eclipse MAVENT My .ClassPath كلما تم تشغيل بناء، وأفعل ذلك باستخدام التكوين التالي:

    <!--
        Generate a new .classpath each time the build is run, but don't try
        to download sources or javadocs
    -->
    <profile>
        <id>elipse-update</id>
        <activation>
            <file>
                <exists>.classpath</exists>
            </file>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-eclipse-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>eclipse</goal>
                            </goals>
                            <configuration>
                                <downloadSources>false</downloadSources>
                                <downloadJavadocs>false</downloadJavadocs>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

لسبب ما، فإن هذا يؤدي إلى فشل البرنامج المساعد ل Maven Jetty مع أخطاء ClassnotfoundException (فهو يشكو من جميع أنواع فئات الربيع لا يجري هناك). بالطبع، عملت بدون ضربة عندما لم يكن لدي المكون الإضافي ل eclipse maven مثبت. إليك مثال على ما أتحدث عنه:

$ mvn jetty:run
[INFO] Scanning for projects...
...
[INFO] Starting jetty 6.1.22 ...
2010-02-11 20:53:08.984:INFO::jetty-6.1.22
2010-02-11 20:53:09.109:WARN::Could not instantiate listener org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)
        at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255)
        at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274)
        at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)

بالطبع، إذا قمت بحذف قسم البرنامج المساعد Eclipse، يمكنني تشغيل رصاصي كما هو متوقع:

$ mvn jetty:run
[INFO] Scanning for projects...
...
Feb 11, 2010 8:55:28 PM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization completed in 1672 ms
2010-02-11 20:55:28.687:INFO::Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
[INFO] Starting scanner at interval of 5 seconds.

بعض الأشياء التي أعرفها:

  • نعم، أنا فقط تنشيط هذا الملف الشخصي إذا كان .classPath موجود. يبدو أن هذا يبدو مضادا بديهيا، ولكن لدي سبب: لدي ملف تعريف آخر ينشط عند غياب .classpath هو الذي يدير البرنامج المساعد Eclipse مع خيارات تنزيل التعليمات البرمجية المصدر و Javadocs المحددة إلى True. لا أريد أن يحدث هذا كل بناء، لذلك قمت بإنشاء تكوين إضافي منفصل عندما يكون ClassPath موجود بالفعل.
  • نعم، يمكنني ببساطة إنشاء خصائص شغلت قيم الخيارات التي أرغب في تغييرها بدلا من تحديد التكوين المساعد بأكمله مرة أخرى. في هذه الحالة، أود فقط ضبط خاصية Eclipse.downloadSources إلى True أو False اعتمادا على وجود classpath والحصول على تعريف إضافي واحد في قسم الإنشاء العادي.

اي نصيحه؟ هذه مشكلة غريبة.

شكرا، ليه

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

المحلول

أظن أن المكون الإضافي الكسوف في الأهراف فوضة قم ببعض ClassPath Woodo الذي يؤثر على البرنامج المساعد Jetty لاحقا.

ولكن أن نكون صادقين، هذه ليست طريقة شائعة جدا لاستخدام البرنامج المساعد Eclipse، على الأقل ليس معرفتي. معظم الناس لا يشملونها في بناءهم، فهي تديرها فقط عندما تغير بوم وهذا عموما لا يحدث كل بناء. وعلاوة على ذلك، لمس .classpath الخلط بين الكسوف إذا كنت أتذكر جيدا وتأتي بإعادة بناء نظيفة للمشروع مزعج للغاية.

لذلك في النهاية، أنا آسف لذلك، يبدو أن هذا يعرض المزيد من إزعاجا من الفوائد. يمكنك محاولة فتح جيرا العدد رغم ذلك.

نصائح أخرى

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

لماذا تريد الاستمرار في إعادة تشغيله؟

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