본문 바로가기

아키텍처 Architecture/Troubleshooting 트러블슈팅

Maven dependency를 찾지 못할 때 (crawler4j)

1. 문제상황 

crawler4j를 이용해 java crawler를 만들던 중

1) runtime에서는 정상 작동

2) compile할 때 dependency 에러 발생

 

* 사용한 crawler4j 버전

		<!-- https://mvnrepository.com/artifact/edu.uci.ics/crawler4j -->
		<dependency>
			<groupId>edu.uci.ics</groupId>
			<artifactId>crawler4j</artifactId>
			<version>4.3</version>
		</dependency>

 

* 에러 로그

[INFO] --------------------------------[ jar ]---------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.890 s
[INFO] Finished at: 2022-02-12T01:03:08+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project www: Could not resolve dependencies for project com.subbak2:www:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at edu.uci.ics:crawler4j:jar:4.3 -> com.sleepycat:je:jar:5.0.84: Failed t
o read artifact descriptor for com.sleepycat:je:jar:5.0.84: Could not transfer artifact com.sleepycat:je:pom:5.0.84 from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [oracleReleases (http://dow
nload.oracle.com/maven, default, releases+snapshots)] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

 

2. 에러 로그 분석

1) crawler4j 의 dependency 중 하나인 com.sleepycat:je를 찾지 못했다.

Failed to collect dependencies at edu.uci.ics:crawler4j:jar:4.3 -> com.sleepycat:je:jar:5.0.84

 

2) 이 때 찾지 못한 repository의 주소는 아래 주소이다.

 Blocked mirror for repositories: [oracleReleases (http://download.oracle.com/maven 

 

3. 조치

1) 프로젝트의 pom.xml에 에러 원인인 com.sleepycat:je를 명시해봤다.

<!-- https://mvnrepository.com/artifact/com.sleepycat/je -->
<dependency>
    <groupId>com.sleepycat</groupId>
    <artifactId>je</artifactId>
    <version>5.0.84</version>
</dependency>

출처 : https://mvnrepository.com/artifact/com.sleepycat/je/5.0.84

 

→ 정상적으로 .m2 폴더에 library가 저장됐다.

→ mvnrepository에는 정상적으로 jar 파일이 있고,

    crawler4j에서 설정한 repository인 download.oracle.com에

    해당 library가 없다 (시간이 지나 버전이 관리가 안되는 등의 이유로 추정)

 

2) crawler4j library의 pom에서 의존성 확인, 경로 수정.

 - 먼저 .m2\repository\edu\uci\ics\crawler4j\4.3\crawler4j-4.3.pom 에는 의존하는 모든 library의 repository를 

   download.oracle.com으로 명시하고 있었다.

	<repositories>
		<repository>
			<id>oracleReleases</id>
			<name>Oracle Released Java Packages</name>
			<url>http://download.oracle.com/maven</url>
			<layout>default</layout>
		</repository>
	</repositories>

- sleepycat.je를 제외한 라이브러리는 정상작동할 수 있으므로,

  해당 라이브러리만 임의로 경로를 지정해 아래와 같이 수정해주었다.

 

--1. .m2\repository\edu\uci\ics\crawler4j\4.3\crawler4j-4.3.pom 수정
   <dependency>
		<groupId>com.sleepycat</groupId>
		<artifactId>je</artifactId>
		<version>${je.version}</version>
                <scope>system</scope>
                <systemPath>${project.basedir}/src/main/resources/je-5.0.84.jar</systemPath>
	</dependency>
    
--2. .m2에 있는 je-5.0.84.jar를 위에 명시한 systemPath로 이동
-- 1) .m2\repository\com\sleepycat\je\5.0.84\je-5.0.84.jar 를 복사해서
-- 2) spring boot 프로젝트의 /src/main/resources 에 넣어줬다.

 

빌드 완료

반응형