Maven에서 종속성 추가


134

가지고있는 jar 파일을 어떻게 가져 와서 maven 2의 종속성 시스템에 추가합니까? 나는이 의존성을 유지하고 내 코드는 컴파일 할 수 있도록 클래스 경로 에이 jar이 필요합니다.

답변:


139

두 단계로이 작업을 수행해야합니다.

1. JAR에 groupId, artifactId 및 version을 제공하고이를 저장소에 추가하십시오.

내부 저장소가없고 JAR을 로컬 저장소에 추가하려는 경우 임의의 groupId / artifactId를 사용하여 다음과 같이 JAR을 설치할 수 있습니다.

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

내부 리포지토리가있는 경우이를 배포하여 조직의 다른 개발자가 사용할 수 있도록하려는 경우도 있습니다. 저장소의 웹 기반 인터페이스를 사용하여 아티팩트를 추가하지만을 사용하여 동일한 작업을 수행 할 수 있어야합니다 mvn deploy:deploy-file ....

2.이 JAR을 참조하도록 종속 프로젝트를 업데이트하십시오.

그런 다음 요소에 다음을 추가하여 JAR을 사용하는 프로젝트의 pom.xml에서 종속성을 업데이트하십시오.

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>

3
배포와 관련된 세부 정보를 추가 할 수 있습니까? 내부 저장소가 있으며 다른 jar 개발자와 빌드 서버가 jar를 가져 오도록 로컬 jar 설치 파일을 해당 저장소에 배치하려고합니다.
Kieveli

이 답변은 모두 좋아해야합니다! 나는 이것을 사용하여 Google App Engine과 Heroku 모두에서 maven 프로젝트에 대한 종속성을 성공적으로 추가했습니다.
레오 C 한

93

maven 저장소에없는 종속성을 지정할 수도 있습니다. 팀의 중앙 Maven 저장소가 없거나 CI 서버 가있는 경우 유용 할 수 있습니다.

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>

4
항아리 대신 다른 pom 파일을 사용할 수 있습니까?
Jayen

45

실제로, 이것을 조사 할 때, 나는이 모든 대답이 잘못되었다고 생각합니다. 에 대한 이해 수준이 귀하의 질문에 오도되었습니다 maven. 그리고 나는 방금 소개 되었기 때문에 우리에게 말합니다 maven.

에서 Eclipsejar 파일을 프로젝트에 추가하려면 일반적으로 jar 파일을 수동으로 다운로드 한 다음 lib 디렉토리에 놓으십시오 . maven을 사용하면 이런 식으로하지 않습니다. 당신이하는 일은 다음과 같습니다.

  • mvnrepository로 이동
  • 추가하려는 라이브러리를 검색하십시오.
  • 복사 dependency문을로pom.xml
  • 통해 재건 mvn

이제 의존성 목록과 함께 maven연결 및 다운로드하고 jar, jar있을 수 있는 추가 의존성을 자동으로 해결합니다 . 따라서 jar공통 로깅도 필요한 경우 다운로드됩니다.


5
Spring Tool Suite (Eclipse 기반)를 사용하고 있습니다. 위의 솔루션에서 1 단계 및 2 단계 후 : 1. STS 편집기에서 pom.xml을 열고 하단의 "종속성"탭을 클릭하십시오. 2. 종속성 그룹에서 "추가"를 클릭하십시오. 3. 브라우저 창에서 "Maven"탭 종속성 정보를 복사 / 붙여 넣기 ( STS 4에서 "종속성 선택"팝업의 해당 필드에 groupId, artifactId, version)를 입력합니다. 확인을 클릭합니다. 5. pom.xml 저장 일단 저장하면 STS의 하드 드라이브 및 maven 종속성 설정에있는 maven 디렉토리가 몇 초 내에 업데이트됩니다. .xml을 직접 편집 할 수 있지만이 도구를 사용하면 xml 형식 문제를 피할 수 있습니다.
Chris R

2
이것은 실제로 선호하는 방법이지만, 그렇게 할 수없는 상황이 있습니다 (예 : mvnrepository에없는 독점적 인 항아리). 이 경우 "수동으로"추가하는 방법이 필요합니다.이 경우 다른 답변에 솔루션이 있습니다.
Thunderforge

요청 된 질문이 초보 질문이 아닐 수도 있습니다. 나는 maven으로 작업하는 데 소비 된 시간에서 오는 적절한 문구없이 무언가를하려고하는 사람들을 위해 이것을 넣었습니다. (당시와 같이)
Kieveli

KISS 감사합니다. Java에서 C # Nuget에 해당하는 것을 읽었지만 클릭하거나 cmd를 실행하여 실행할 버튼을 찾으려고했습니다. 정확히 1 : 1은 아니지만 작업을 수행합니다.
Terrance

intelleJ에서 maven으로 프로젝트를 다시 작성하는 방법은 무엇입니까?
Irfan Nasim

14

나는 이것을 할 것이다 :

  1. pom에서 원하는대로 종속성을 추가하십시오.

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>

  2. 실행 mvn install하면 jar를 다운로드하려고 시도하고 실패합니다. 이 과정에서 오류 메시지와 함께 jar를 설치하는 완전한 명령을 제공합니다. 해당 명령을 복사하여 실행하십시오! 쉽게 허?!


3

POM을 업데이트하는 방법을 묻는 것이 아니라 "잘 알려진 저장소"로 종속성을 푸시하는 방법을 묻는다고 가정하겠습니다.

그렇다면, 다음 당신이 읽고 싶은 것입니다.

그리고 내부 리포지토리 서버를 설정하려는 사람은 여기를보십시오 (Maven 2 사용의 문제 중 절반은 문서를 찾는 것입니다)


나는 의존성을 스스로 유지하고 싶다. 사내 도서관입니다.
Milhous
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.