2014-03-06 3 views
6

내 응용 프로그램의 독립 실행 형 버전을 만들고 싶습니다. 패키지되지 않는 * .jar 파일을 어떻게 제외 할 수 있는지 궁금합니다. "mariaDB4j-2.0-SNAPSHOT.jar"파일입니다. 테스트에 사용합니다.은 약 56MB입니다.불필요한 관리되지 않는 종속성을 패키징에서 제외하는 방법은 무엇입니까?

jar 파일을 사용자 지정 디렉터리 'test/lib'에 넣으려고했습니다. 불행하게도 이것은 mariaDB4j를 패키징에서 제외하지 않았습니다.

unmanagedBase <<= baseDirectory { base => base/"test/lib" } 

unmanagedJars in Test <<= unmanagedBase map { base => (base ** "mariaDB4j-2.0-SNAPSHOT.jar").classpath } 

이 문제에 대한 의견이 있으십니까?

건배 올리버

답변

5

난 당신이 테스트 클래스 경로에 추가 할 생각합니다.

두 가지 :

  1. 당신은 당신의 항아리가 켜져 있는지 확인하기 위해 show test:fullClasspath를 사용하여 클래스 패스에 무엇을 확인할 수 있습니다. inspect test:fullClasspath을 사용하면 테스트에 사용 된 종속성을 알 수 있습니다.
  2. 내가 직접 통해 클래스 패스에 항아리를 추가 할 수 있습니다 생각 : 테스트에서

    fullClasspath + = Attributed.blank (baseDirectory.value/"테스트/lib 디렉토리/mariaDB4j-2.0-SNAPSHOT")

희망이 도움이됩니다.

+0

답변 해 주셔서 감사합니다. 작동하지 않습니다. mariaDB4j-2.0-SNAPSHOT.jar는 사용할 수 없으며 컴파일되지 않습니다. 모든 테스트가 실패합니다. dist를 실행 한 후 mariaDB4j-2.0-SNAPSHOT.jar은 압축되지 않습니다. 그건 전투의 절반 ... – OliverKK

+0

현재 프로젝트로 컴파일 된 파일을 추가하고 있습니까? – jsuereth

1

이 방법은 효과가 있지만 과장된 것으로 보입니다. 비 관리 종속성의 기본 디렉토리를 변경하고 테스트에 파일을 포함시키고 컴파일에서 제외합니다.

unmanagedBase <<= baseDirectory { base => base/"test/lib" } 

unmanagedJars in Test <<= unmanagedBase map { base => (base ** "mariaDB4j-2.0-SNAPSHOT.jar").classpath } 

excludeFilter in unmanagedJars in Compile := "mariaDB4j-2.0-SNAPSHOT.jar" 

excludeFilter in unmanagedJars in Compile ~= { _ || "mariaDB4j-2.0-SNAPSHOT.jar" } 
1

당신이 다음 MVN 설치 단지

resolvers += "Private Maven Repository" at file(".").toURI.toURL+"/repository" 

와 소스 트리에서 파일 기반 받는다는 저장소를 사용하는 소스 저장소에 항아리를 유지하려면 관리되지 않는 종속

를 사용하지 않는 MariaDB4j를 로컬로 복사하고 maven 캐시의 결과물을 $ yourproject/repository에 복사하십시오.

정규 관리 종속성과 같은 종속성을 사용하십시오

+0

어쩌면 패키지에서 mariaDB4j를 제외하는 방법 중 하나 인 정규 관리 종속성과 같은 종속성을 사용하는 방법을 보여주는 예제를 게시 할 수 있습니까? – OliverKK

+1

libraryDependencies + = "ch.vorburger.mariaDB4j"% "mariaDB4j"% "2.0-SNAPSHOT"% "test" – OlegYch

관련 문제