Maven 저장소에서 소스 JAR 가져 오기


답변:


785

Maven Micro-Tip : 소스 및 Javadoc 가져 오기

IDE에서 Maven을 사용하는 경우 라이브러리 종속성에 대한 소스 코드 및 Javadoc을 해결하기 위해 IDE가 필요하다는 것을 종종 알 수 있습니다. 그 목표를 달성하는 쉬운 방법이 있습니다.

mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc

첫 번째 명령은 pom 파일의 각 종속성에 대한 소스 코드 다운로드를 시도합니다.

두 번째 명령은 Javadocs 다운로드를 시도합니다.

Maven은 여기 도서관 포장업자의 자비에 있습니다. 그래서 그들 중 일부는 소스 코드가 패키지되어 있지 않으며 많은 것들은 Javadocs를 갖지 않을 것입니다.

종속성이 많은 경우 포함 / 제외를 사용하여 특정 아티팩트를 얻는 것이 좋습니다. 예를 들어 다음 명령은 특정 artifactId와의 종속성에 대한 소스 만 다운로드합니다.

mvn dependency:sources -DincludeArtifactIds=guava

출처 : http://tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/

설명서 : https://maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html


10
다운로드되면 어디에 배치합니까?
James Moore

15
M2_HOME의 바이너리 JAR과 동일한 디렉토리에 배치합니다.
Alain O'Dea

19
이클립스를 사용하는 경우 나중에 "mvn eclipse : eclipse"를 수행 한 다음 이클립스에서 프로젝트를 새로 고치는 것이 도움이 될 수 있습니다. 소스를 각 파일에 수동으로 첨부하지 않아도됩니다.
unigeek

1
소스와 javadoc을 다운로드 한 후 찾을 수 없습니다. M2_HOME 아래의 모든 디렉토리를 확인했습니다
Patrick Kiernan

2
mvn dependency:resolve -Dclassifier=javadoc하게 IntelliJ IDEA는 자동으로 아주 좋은입니다의 javadoc를 통지.
Jonik

89

maven-eclipse 플러그인 구성 및 실행 (예 : 명령 행 mvn eclipse:eclipse)

   <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
        </plugins>
    </build>

무슨 소리 야? mvn eclipse:eclipsePOM 파일에 추가 하면 소스 및 문서가 실행될 때 다운로드 됩니까?
Lii

3
예. 그렇게 간단합니다.
RobAu

@RobAu는 소스를 어디에서 다운로드 할 것인지, 프로젝트 자체 또는 다른 곳에 첨부 할 것인가?
Jaskey

1
M2_REPO일반 jar와 동일한 위치에 xxxx-yy-sources.jar 로 jar로 다운로드됩니다 . 라이브러리에서 xxxx-yy jar의 소스 코드로 첨부됩니다
RobAu

1
@KanagaveluSugumar 당신은 일식에 M2_REPO를 추가 한 다음 프로젝트를 새로 고쳐야합니다.
RobAu

36

프로젝트가 프로젝트 소스의 jar 파일을 작성하고 maven 저장소에 배치하면 다음을 찾을 수 있습니다. :)

참고로 소스 아티팩트는 일반적으로 maven-source-plugin에 의해 생성됩니다 . 이 플러그인은 소스 플러그인 구성에 설명 된대로 프로젝트의 기본 또는 테스트 소스를 jar 아카이브에 번들 할 수 있습니다 .

(...) 생성 된 jar 파일은 finalName주 소스 인 경우 더하기 "-sources" 값으로 이름이 지정됩니다 . 그렇지 않으면 finalName테스트 소스 인 경우 플러스 "-test-sources"가됩니다.

아티팩트 ( "-sources"또는 "-test-sources")를 설명하기 위해 추가 텍스트를 분류 자라고합니다.

분류자를 사용하는 이슈에 대한 종속성을 선언하려면 <classifier>요소 를 추가하기 만하면 됩니다. 예를 들면 다음과 같습니다.

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.7.ga</version>
  <classifier>sources</classifier>
</dependency>

일반적으로이 작업을 수행하지 않으면 대부분의 IDE는 명시 적으로 종속성을 선언하지 않고 주 아티팩트에서 소스 (및 / 또는 JavaDoc)를 다운로드 할 수 있도록 지원합니다.

마지막으로 일부 리포지토리 검색 엔진에서는 분류기를 사용하여 아티팩트를 검색 할 수 있습니다 (적어도 Nexus는 고급 검색을 사용함). 예를 들어이 검색 을 참조하십시오 .


18

IntelliJ Idea 의 maven idea 플러그인 을 사용하면 소스 및 Java doc을 해결하고 다운로드해야하는지 여부를 지정할 수 있습니다.

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true

모든 의존성에 대한 소스를 다운로드하는 대신 의존성 자체와 함께 pom에 지정하여 일부 의존성에 대해서만 다운로드 할 수 있습니까?
nanosoft

이 플러그인은
폐기되었습니다

18

특정 소스 또는 javadoc 을 다운로드하려면 GroupId를 포함해야합니다. 아래에 표시된대로 쉼표로 구분 된 값입니다.

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=sources

분류자는 쉼표로 구분되지 않으므로 javadoc을 다운로드하려면 분류자를 javadoc로 사용하여 위 명령을 한 번 더 실행해야합니다.

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=javadoc

모든 의존성에 대한 소스를 다운로드하는 대신 의존성 자체와 함께 pom에 지정하여 일부 의존성에 대해서만 다운로드 할 수 있습니까?
nanosoft

14

이슈를 다운로드하려면

mvn dependency:get -Dartifact=groupId:artifactId:version:packaging:classifier

Groovy 소스의 경우

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:sources

Groovy의 javadoc의 경우 다음을 사용합니다.

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:javadoc

이것은 주어진 아티팩트를 로컬 Maven 저장소에 넣습니다 $HOME/.m2/repository.

dependency:sources 플러그인 소스 나 플러그인 내에 정의 된 종속성 소스가 아닌 프로젝트 종속성 소스 만 다운로드합니다.


12

이 관련 질문에서 정보를 찾을 수 있습니다 .eclipse maven 플러그인을 사용하는 경우 Eclipse에 Maven 관리 종속성에 대한 소스 jar 파일을
가져온 다음 'mvn eclipse : eclipse -DdownloadSources = true'


이것은 나를 위해 일한 유일한 솔루션입니다. Eclipse Kepler를 사용하고 있습니다. 이것은 .classpath 에서 적절한 참조를하기 때문에 . 다음과 같이 :
aspdeepak

<classpathentry kind = "var"path = "M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0.jar"sourcepath = "M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0
-sources.jar

@ RobAu 답변을 따르면 Spring이 아닌 repo에서 Hibernate Docs 만 다운로드됩니다 . 그런 다음 u가 제공 한 링크 및 @ mrembisz를 팔로우하고 Maven 환경 설정 을 변경 하고 매력처럼 작동 하는 링크를 방문하십시오 . Spring Docs를 얻습니다 . @Stefan De Boey 공유해 주셔서 감사합니다. +1.
OO7

9

이클립스를 사용하는 경우 환경 설정> Maven을 열고 이슈 소스 다운로드를 선택하면 pom.xml이 손상되지 않고 머신 위치 ~ / ​​.m2에서 바로 개발을 위해 소스 또는 Java 문서 (선택한 경우)를 유지할 수 있습니다


7

이클립스에서

  1. 오른쪽 클릭 pom.xml
  2. 선택 Run As-> Maven generate-sources
    .m2 폴더에 기본적으로 소스를 생성합니다

전제 조건 :

Maven은 Eclipse로 구성해야합니다.


1
다른 질문에 답하십시오. 이 질문은 소스 JAR을 생성하지 않는 다운로드에 관한 것입니다.
Stephen C

5

일식에서-프로젝트를 클릭 한 다음 :

여기에 이미지 설명을 입력하십시오.


이클립스 maven 설정에서 '아티팩트 소스 다운로드'를 선택하지 않았으므로 jar 만 다운로드하십시오. 그러나 후자, 나는이 솔루션을 사용하여 소스를 다운로드하려고 시도했지만 아무런 메시지없이 실패했습니다. maven 로컬 저장소에서 jar 폴더를 제거하고 jar을 다시 다운로드 한 다음 소스 jar가 성공했습니다. maven 로컬 저장소에 항아리가 있기 때문에 소스를 다운로드하는 데이 방법을 사용할 수 없다고 생각합니다.
frank

4

업로드 된 경우 가능합니다. 일반적으로 "frameworkname-version-source (s)"라고합니다.


4

NetBeans, 컨텍스트 클릭

Maven 기반 프로젝트가있는 NetBeans 8 에서는 관심있는 종속성의 jar 파일 목록 항목을 컨텍스트 클릭하면됩니다. 를 선택하십시오 Download Sources. 잠시만 기다려주십시오. NetBeans는 사용 가능한 경우 자동으로 소스 코드를 다운로드하여 설치합니다.

마찬가지로 Download Javadoc문서를 로컬로 설치 하도록 선택할 수 있습니다 . 그런 다음 편집기에서 일부 코드를 컨텍스트 클릭하고 JavaDoc을 보도록 선택할 수 있습니다.

Maven이 구동하는 NetBeans 8 프로젝트에서 컨텍스트 메뉴 항목 "소스 다운로드"의 스크린 샷


3

Eclipse (Kepler)에서 Maven 콘솔을 보면서 소스를 아직 다운로드하지 않은 편집기에서 Maven 종속성에서 클래스를 열려고하면 소스가 Maven 종속성에 대해 자동으로 다운로드됩니다. 이것은 모든 의존성에 대한 소스를 얻고 싶지 않지만 미리 원하는 것을 모르고 Eclipse를 사용하는 경우에 유용합니다.

나는 @GabrielRamierez의 접근법 을 사용했지만 결국 @PascalThivent의 접근법을 사용할 것입니다.


2

groupIdaritifactId 를 알고 있으면 다음 과 같이 다운로드 URL을 생성 할 수 있습니다.

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

http://central.maven.org/maven2/ch/qos/logback/logback-classic/

그리고 당신은 이와 같은 페이지를 얻을 것입니다, 필요한 버전을 선택하십시오, 그냥 즐기십시오! 여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


1

또한 이클립스 플러그인을 사용하여 프로젝트를 이클립스 작업 공간으로 가져 왔습니다. 다른 프로젝트에서 작업 한 이후로 일식으로 작업 할 수는 있지만 maven-eclipse-plugin 없이는 가능하다는 것을 알았습니다. 따라서 다양한 환경에서 사용하기가 쉽고 일식보다 maven을 쉽게 사용할 수 있습니다. 그리고 그것은 pom.xml 파일을 변경하지 않고.

따라서 Gabriel Ramirez의 접근 방식을 권장합니다.


0

디버깅을 위해 다음과 같은 "Java Decompiler"를 사용할 수도 있습니다. JAD 및 디 컴파일 소스 (즉, 생성 된 소스가 원본과 동일하지는 않지만). 그런 다음 Eclipse 또는 선호하는 IDE에서 플러그인으로 JAD를 설치하십시오.


0

Maven 저장소는 소스 jar를 다운로드하는 간단한 방법을 제공합니다.

"spring-boot-actuator-autoconfigure"데모를 사용하여 설명하겠습니다.

  1. maven 저장소로 이동- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. 이 페이지에는 다양한 버전이 나열되어 있습니다. 원하는 것을 클릭하십시오. 2.1.6. https:
  3. 페이지에는 "파일"옆에 "모두보기"링크가 있습니다. 그것을 클릭하십시오-https: //repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. 이 페이지는 소스 파일을 포함하여 다양한 파일을 나열합니다-https: //repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/spring-boot-actuator-autoconfigure -2.1.6.RELEASE-sources.jar

그렇지 않으면 github에서 repo를 항상 "git clone"하여 특정 코드를 얻을 수 있습니다.

다른 사람들이 설명했듯이 "mvn dependency : sources"명령을 사용하여 사용중인 종속성에 대한 get 및 generate source jar을 사용할 수 있습니다.

참고 : 일부 종속성에는 소스 코드가 아닌 pom 파일이 포함되어 있기 때문에 sources.jar이 없습니다. 예를 들어 spring-boot-starter-actuator . 이 경우와 같이 :

스타터 POM은 응용 프로그램에 포함 할 수있는 편리한 종속성 설명자 집합입니다. 샘플 코드를 찾아 내고 붙여 넣기로드 의존성 설명자를 복사하지 않고도 필요한 모든 Spring 및 관련 기술에 대한 원 스톱 상점을 얻을 수 있습니다.

참조 : 스프링 부트 스타터 소개


0

IntelliJ IDEA에서는 소스 자동 다운로드 옵션을 켜서 가져 오는 동안 이슈 소스를 자동으로 다운로드 할 수 있습니다.

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

여기에 이미지 설명을 입력하십시오


0

아티팩트의 소스 jar 파일을 수동으로 찾으려면 특정 아티팩트의 maven 저장소 위치로 이동하고 파일에서 '모두보기'를 클릭하십시오. 소스 jar 파일을 찾을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.