2017-01-31 6 views
1

maven으로 빌드 된 웹 응용 프로그램의 연속 통합에 circleCI를 사용하고 있습니다. CircleCI에서 테스트와 빌드를 할 때 외부 라이브러리를 사용하게하고 싶습니다.
라이브러리는 더 큰 상위 메이븐 프로젝트에 형제 프로젝트의 아티팩트 만 있기 때문에 이미 내 pom.xml에 종속성으로 추가 했으므로 로컬 환경에서 아무 문제없이이 프로젝트를 빌드 할 수 있습니다.
아래의 circle.yml과 bash 파일을 사용하여 M2_HOME에 빌드 된 jar 파일을 수동으로 추가하려고했습니다.CircleCI에 maven 용 외부 라이브러리를 포함하는 방법

circle.yml :

#... 
dependencies: 
    pre: 
     - sudo chmod a+x add_dependencies.sh 
     - ./add_dependencies.sh 
#... 

add_dependencies.sh :

sudo wget http://my.jar.file.url -O exteral_lib.jar --quiet 
sudo mkdir -p ${HOME}/.m2/repository/com/group/artifact/1.0.0/ 
sudo cp -rl ./exteral_lib.jar ${HOME}/.m2/repository/com/group/artifact/1.0.0/exteral_lib.jar 
sudo rm -f ./exteral_lib.jar 

하지만이 작동하지 않았다.

Failed to create parent directories for tracking file, 
Non-resolvable import POM: Could not transfer artifact 

CircleCI가 종속성을 해결하려고 할 때 발생했습니다.

이 문제를 어떻게 해결할 수 있습니까?

답변

1

대신 저장소에 항아리를 복사, 당신은 그것을 설치하려고 할 수 있습니다 :

mvn install:install-file -DgroupId=<your group id> -DartifactId=<your artifact id> -Dversion=<your version id> -Dpackaging=jar -Dfile=<your jar filename> -DgeneratePom=true 

예 :

mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc -Dversion=4.2 -Dpackaging=jar -Dfile=sqljdbc.jar -DgeneratePom=true 
+0

안녕, 덕분에 많이. 귀하의 솔루션을 시도하고 라이브러리가 설치 된 것 같았지만, 내 단위 테스트를 실행할 때'java.lang.NoClassDefFoundError : com/google/gson/JsonIOException' 오류가 발생했습니다. Gson은 라이브러리에서 사용되고 이미 컴파일 범위와의 종속 관계로 pom.xml 파일에 포함되어 있으므로이 오류가 발생한 이유를 찾을 수 없습니다. 나는 또한 maven-assembly-plugin을 언급했지만 (행운을 얻지 못했다) [here] (http://stackoverflow.com/a/32170738/6279569) 라이브러리가 제대로 설치되지 않았거나 설치가되지 않았습니까? – choasia

+0

아, 이제 또 다른 문제이며 해결되었습니다. 귀하의 답변 주셔서 감사합니다! – choasia