문제

빌드가 실행될 때마다 Maven Eclipse 플러그인이 .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 오류로 실패하게됩니다 (모든 종류의 스프링 클래스가없는 것에 대해 불평합니다). 물론 Maven Eclipse 플러그인이 설치되지 않았을 때 히트없이 작동했습니다. 다음은 내가 말하는 내용의 예입니다.

$ 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)

물론 이클립스 플러그인 섹션을 삭제하면 예상대로 부두를 실행할 수 있습니다.

$ 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.DownloadSources 속성을 클래스 경로의 존재에 따라 True 또는 False로 설정하고 일반 빌드 섹션에 단일 플러그인 정의가 있습니다.

어떤 충고? 이것은 이상한 문제입니다.

고마워요, 레

도움이 되었습니까?

해결책

Maven Eclipse 플러그인을 생각합니다 엉망 나중에 Jetty Plugin에 영향을 미치는 ClassPath Woodo를 수행하십시오.

그러나 솔직히 말해서, 이것은 적어도 내 지식이 아닌 Eclipse 플러그인을 사용하는 매우 일반적인 방법이 아닙니다. 대부분의 사람들은 빌드에 포함시키지 않으며 POM이 변경되었을 때 실행하며 일반적으로 모든 빌드가 발생하지는 않습니다. 또한, 만지고 있습니다 .classpath 내가 잘 기억하고 꽤 성가신 프로젝트의 깨끗한 재건을 강요한다면 일식을 혼란스럽게합니다.

결국, 죄송합니다. 이것은 혜택보다 더 성가심을 불러 일으키는 것 같습니다. 당신은 a를 열 수 있습니다 지라 문제 그렇지만.

다른 팁

.classpath가있을 때 모든 빌드에서 Maven-Eclipse-Plugin을 실행하고 싶지 않습니다. 나는 그것이 클래스 경로에 무엇을하는지 정확히 말할 수 없지만 이것이 사용되는 방식이 아닙니다. 당신이 그것을 실행할 때 당신은 Eclipse : Eclipse (또는 다른 목표) 만 실행한다고 가정합니다.

왜 다시 실행하고 싶습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top