개인 자료란 (JE)

  서버 커뮤니티

Profile SN1 대표칭호 없음
Profile

질문하기 Java

프로젝트에서 Dependency를 사용하지 못합니다

2022.10.01 조회 수 325 추천 수 0
이해도 플러그인, 알고리즘 
게임버전 (JE) 버킷 

여차여차해서 결국 라이브러리를 만들었습니다.

그런데 정작 Gradle에서 사용해보려고 하니, Gradle에서 다른 Dependency는 잘만 받아오면서 이 라이브러리만 사용하지 못하고 있습니다.

Gradle의 캐시 디렉토리를 뒤져보니 pom 파일은 정상적으로 다운로드 된 상태인데... 대체 왜 안 되는 걸까요.

repositories {
  ...
  maven { url = "https://jitpack.io" }
  ...
}
dependencies {
  compileOnly 'io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT'
  implementation "com.gitlab.exmserver:mol:main-SNAPSHOT"
}

JitPack에서 하라고 하는 대로 전부 한 것 같은데... 대체 왜 안될까요?

JitPack에서 Build 자체는 매우 정상적으로 진행된 것을 확인했습니다.

10개의 댓글

작은거인
2022.10.01

그래들 리로드 하셨죠..?

SN1
2022.10.01
@작은거인

기본적인 대처법은 다 했다고 생각합니다. 리로드, 캐시 삭제 후 재시도 등...

qsef1256
2022.10.01

해당 리포지토리를 좀 확인하고 있는데, Release 나 Package나 공개적으로 되어 있는 게 없는 것 같더라고요.

그리고 pom 파일이 맞나요? 얘 Gradle 쓰던데요

SN1
2022.10.01
@qsef1256

JitPack은 태그나 릴리즈가 없어도 <브랜치>-SNAPSHOT으로 최신 커밋을 사용할 수 있습니다. 또한 JitPack은 Gradle 프로젝트일 경우 maven-publish 플러그인을 이용해 gradle publishToLocalMaven 작업을 수행해서 Maven과의 호환성을 제공합니다.

 

실제 빌드 역시 성공적으로 진행되었습니다.

 

공식 문서에 적힌대로 다 한 것 같은데 뭐가 문제일까요...

qsef1256
2022.10.01
@SN1

사용하지 못한다는 게 정확히 무슨 뜻인가요?

SN1
2022.10.01
@qsef1256

Paper API와 제 라이브러리를 다음과 같이 사용한다고 가정할 때, Gradle이 제 라이브러리만 불러 오지를 못합니다.

dependencies {
  compileOnly 'io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT'
  implementation "com.gitlab.exmserver:mol:main-SNAPSHOT"
}

Paper API는 Paper에서 제공해주니 compileOnly를 써야 하고, 제 라이브러리는 Paper에서 제공해주지 않으므로 implementation을 쓴 후 나중에 shadowJar 등을 진행해야겠죠.

어찌되었건 dependencies로 선언한 이상 IDE에서 사용이 가능해야하는데, cannot find symbol이었나, 이와 비슷한 오류를 내면서 붉은색으로 글씨가 표시되더라고요. 아예 해당 패키지가 Gradle에서 불러와지지 않은 것 같아보입니다. 수동으로 import com.gitlab.exmserver까지만 입력해도 exmserver 부분이 붉게 표시되거든요.

qsef1256
2022.10.01
@SN1

pom.xml 내용까지 정확히 확인해보셨나요? 그리고 Invalidate Cache는 한 게 맞죠? (했었을꺼라 생각됩니다만)

SN1
2022.10.01
@qsef1256

Maven 사용 경험이 없어 정확히는 장담할 수 없지만, 별 문제는 없어 보입니다.

Paper API의 pom 파일과 라이브러리의 pom 파일을 비교해보아도 특별히 다른 점은 보이지 않습니다. dependency 관련은 애당초 NMS를 paperweight userdev 플러그인으로 처리해야 해서 정상인지 아닌지 확인할 수 없습니다.


gradle publishToMavenLocal 명령어로 로컬에 만들어본 파일 역시 별다른 이상점은 찾지 못했습니다.

<!-- com/gitlab/exmserver/mol/maven-metadata-local.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>com.gitlab.exmserver</groupId>
  <artifactId>mol</artifactId>
  <versioning>
    <latest>1.0.0-SNAPSHOT</latest>
    <versions>
      <version>1.0.0-SNAPSHOT</version>
    </versions>
    <lastUpdated>20221001135737</lastUpdated>
  </versioning>
</metadata>
<!-- com/gitlab/exmserver/mol/1.0.0-SNAPSHOT/maven-metadata-local.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
  <groupId>com.gitlab.exmserver</groupId>
  <artifactId>mol</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <versioning>
    <snapshot>
      <localCopy>true</localCopy>
    </snapshot>
    <lastUpdated>20221001135737</lastUpdated>
    <snapshotVersions>
      <snapshotVersion>
        <extension>pom</extension>
        <value>1.0.0-SNAPSHOT</value>
        <updated>20221001135737</updated>
      </snapshotVersion>
      <snapshotVersion>
        <classifier>all</classifier>
        <extension>jar</extension>
        <value>1.0.0-SNAPSHOT</value>
        <updated>20221001135737</updated>
      </snapshotVersion>
    </snapshotVersions>
  </versioning>
</metadata>
<!-- com/gitlab/exmserver/mol/1.0.0-SNAPSHOT/mol-1.0.0-SNAPSHOT.pom -->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.gitlab.exmserver</groupId>
  <artifactId>mol</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <dependencies/>
</project>

PS. Invalidate Cache는 해도 별 소용이 없더군요.

qsef1256
2022.10.02
@SN1

packaging pom 이 부분이 맞나요? 제가 찾아본 바로는 이건 부모 프로젝트에만 있어야 하고 하위 프로젝트는 jar나 war등 최종 아티팩트로 되어 있는 것 같던데요.

 

https://maven.apache.org/ref/3.8.6/maven-core/default-bindings.html#Plugin_bindings_for_pom_packaging

Maven Docs에 따르면 pom 으로 선언된 프로젝트는 컴파일을 안하고 install deploy가 끝이라고 하네요, 이게 문제일 수 있다고 생각이 들어서요

SN1
2022.10.02
@qsef1256

뭔가 좀 애매하네요. 이 프로젝트는 multi-module project이기도 해서 pom을 쓰는 것이 맞는 것 같기도 하고...

 

https://www.baeldung.com/maven-packaging-types

 

일단 해당 부분을 바꿀 수 있는지 알아보겠습니다.

뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 4

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3