jar 파일 종속성이 많은 대규모 Java 프로젝트가 있습니다. Eclipse 또는 Netbeans에서 프로젝트 (exec 사용)를 실행하려고하면 Maven에서 클래스 패스에 너무 많은 수의 항목이 필요하다는 예외가 발생합니다 (필요한 항목의 2/3 만 포함됨). 누구든지 이것에 대한 해결책을 알고 있습니까? (실행 가능한 jar를 빌드하고 터미널에서 실행하는 것을 제외하고) "classpath-buffer"크기를 "확장"할 수 있습니까?Maven exec 플러그인을 해결하는 방법 : classpath too long error?
답변
이것은 Maven exec 플러그인 버그이며 MEXEC-68에 문서화되어 있습니다. 기자가 패치를 작성 했으므로 곧 해결 될 것으로 기대합니다.
한 가지 해결 방법은 maven-jar-plugin에이 구성을 사용하여 매니페스트 파일에 클래스 경로를 추가하고 종속성을 폴더에 추가 한 다음 해당 폴더를 CLASSPATH envvar에 추가하는 것입니다. JAR 파일은 CLASSPATH 폴더에 있는지, 당신이 받는다는 간부 플러그인 hidding를 사용하여 JAR을 실행할 수있는 경우
Class-Path: plexus-utils-1.1.jar commons-lang-2.1.jar
:
이<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
...
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
...
</plugin>
</plugins>
</build>
...
</project>
이 같은 매니페스트 무언가에 추가합니다 : 예를 들어
클래스 패스 :
mvn exec:exec [...] -Dexec.classpathScope="test"
나는 -Dexec.classpathScope = "test"를 사용하여 mak를 만들었습니다. e 플러그인은 종속성을 무시하고 범위 테스트에서 종속성을 추가합니다.
Java 6 (내가 사용하기를 바랍니다)에서 classpath 항목에 와일드 카드를 사용할 수 있습니다. 정확한 구문을 보려면이 페이지 Setting the classpath을 확인하고 "Understanding the class path and package names
"을 검색하여 오른쪽 섹션으로 검색하십시오.
또는 짧은 경로를 사용하여 필요한 모든 병을 하나의 폴더에 배치하여 경로를 줄이십시오. 예 : C:\jars\
이 문제는 Netbeans 6.10M1에서 수정되었습니다. Bug 188864을보십시오. 이전 버전을 사용 중이라면 여전히 직접 수정할 수 있습니다 (org-netbeans-modules-maven.jar 내의 xml 파일을 편집하면됩니다).
그런 다음 Maven 목표를 IDE 작업에 바인딩하는 방법에 대해 설명하는 Maven Best Practices (http://wiki.netbeans.org/MavenBestPractices#Binding_Maven_goals_to_IDE_actions)를 확인하는 것을 잊지 마십시오.
감사합니다,
마하
이미 C의 경로를 단축 한
: exec 명령 –
그리고 클래스 패스 와일드 카드에 대한 많은 여전히, 아니 행운 \ 주니어 \? – jitter
Java 5를 사용하면 손쉽게 업그레이드 할 수 있습니다 (업그레이드는 고객에게 요청됩니다). –