Obter JARs de origem do repositório Maven

Respostas:

785

Micro-Tip do Maven: obter fontes e Javadocs

Ao usar o Maven em um IDE, muitas vezes você encontra a necessidade de resolver o código fonte e Javadocs para as dependências da sua biblioteca. Existe uma maneira fácil de atingir esse objetivo.

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

O primeiro comando tentará baixar o código fonte de cada uma das dependências no seu arquivo pom.

O segundo comando tentará fazer o download dos Javadocs.

Maven está à mercê dos empacotadores da biblioteca aqui. Portanto, alguns deles não terão o código-fonte empacotado e muitos deles não terão Javadocs.

Caso você tenha muitas dependências, também pode ser uma boa ideia usar inclusões / exclusões para obter artefatos específicos, o comando a seguir, por exemplo, fará o download apenas das fontes da dependência com um artifactId específico:

mvn dependency:sources -DincludeArtifactIds=guava

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

Documentação: https://maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html

Alain O'Dea
fonte
10
Onde os coloca quando são baixados?
James Moore
15
Ele os coloca no mesmo diretório que os JARs binários em M2_HOME.
Alain O'Dea
19
Se você estiver usando o eclipse, pode ser útil também executar "mvn eclipse: eclipse" posteriormente e atualizar seu projeto no eclipse - evita que você anexe manualmente fontes a cada arquivo.
unigeek
1
Não consigo encontrar as fontes e os javadocs após o download. Eu verifiquei todos os diretórios sob M2_HOME
Patrick Kiernan
2
Após o mvn dependency:resolve -Dclassifier=javadocIntelliJ, o IDEA percebe automaticamente os javadocs, o que é muito bom.
Jonik
89

Configurando e executando o plug-in maven-eclipse (por exemplo, na linha de comandos 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>
RobAu
fonte
O que você quer dizer? Você quer dizer que fontes e documentos são baixados quando você executa, mvn eclipse:eclipsese você adicionar isso ao arquivo POM?
21314 Lii13
3
Sim. Simples assim.
Robau
@RobAu, onde a fonte será baixada, será anexada ao projeto em si ou em algum outro lugar?
Jaskey
1
Ele será baixado como jar no seu M2_REPOcomo xxxx-yy-sources.jar, no mesmo local que o jar normal. Ele vai ficar anexado como código fonte para o frasco xxxx-aa nas bibliotecas
Robau
1
@KanagaveluSugumar, você precisa adicionar o M2_REPO ao eclipse e atualizar o projeto.
precisa saber é o seguinte
36

Se um projeto cria um jar das fontes do projeto e o implanta em um repositório maven, você o encontrará :)

Apenas para sua informação, os artefatos de fontes geralmente são criados pelo maven-source-plugin . Esse plug-in pode agrupar as fontes principais ou de teste de um projeto em um arquivo jar e, conforme explicado em Configurando o plug - in de origem :

(...) O arquivo jar gerado será nomeado pelo valor das finalNamemais "-sources" se forem as principais fontes. Caso contrário, seria finalNamemais "-test-sources" se fossem as fontes de teste.

O texto adicional foi fornecido para descrever um artefato ("-sources" ou "-test-sources" aqui) chamado de classificador.

Para declarar uma dependência de um artefato que usa um classificador, basta adicionar o <classifier>elemento Por exemplo:

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

Observe que geralmente você não faz isso, a maioria dos IDEs fornece suporte para fazer download de fontes (e / ou JavaDoc) do artefato principal sem declarar explicitamente uma dependência deles.

Por fim, observe também que alguns mecanismos de pesquisa de repositório permitem pesquisar artefatos usando o classificador (pelo menos o Nexus faz com a pesquisa avançada). Veja esta pesquisa por exemplo.

Pascal Thivent
fonte
18

O plug-in maven idea para o IntelliJ Idea permite especificar se as fontes e o documento java devem ou não ser resolvidos e baixados

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true
dev_doctor
fonte
Em vez de baixar fontes para todas as dependências, é possível fazer o download apenas para algumas dependências, especificando-o em pom junto com a própria dependência, pode b através de alguma tag interna na tag de dependência ou algo semelhante?
Nanosoft 6/07
Este plug-in está aposentado
kiltek 12/03
18

Para baixar alguma fonte específica ou javadoc , precisamos incluir o GroupIds - é um valor separado por vírgula, como mostrado abaixo

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

Observe que o classificador não é separado por vírgula; para baixar o javadoc, precisamos executar o comando acima mais uma vez com o classificador como javadoc

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=javadoc
Anver Sadhat
fonte
Em vez de baixar fontes para todas as dependências, é possível fazer o download apenas para algumas dependências, especificando-o em pom junto com a própria dependência, pode b através de alguma tag interna na tag de dependência ou algo semelhante?
Nanosoft 6/07
14

Para baixar qualquer uso de artefato

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

Para fontes Groovy, isso seria

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

Para o javadoc do Groovy, você usaria

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

Isso coloca o artefato fornecido no repositório local do Maven, ou seja, normalmente $HOME/.m2/repository.

dependency:sources apenas baixa as fontes das dependências do projeto, não as fontes dos plug-ins nem as fontes de dependências definidas dentro dos plug-ins.

Maddin
fonte
12

você pode encontrar informações nesta pergunta relacionada: Obtenha os arquivos jar de origem anexados às dependências gerenciadas pelo Eclipse para Maven
se você usar o plug-in eclipse maven e, em seguida, use 'mvn eclipse: eclipse -DdownloadSources = true'

Stefan De Boey
fonte
Esta é a única solução que funcionou para mim. Estou usando o Eclipse Kepler. Como isso faz referências apropriadas no caminho .class . Como o seguinte:
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 ">
aspdeepak
Quando segui a resposta do RobAu, apenas os documentos do Hibernate são baixados do repositório, não do Spring . Então eu visito o link que você forneceu e seguiu @ mrembisz, alterou a preferência do Maven e funciona como um encanto. Eu recebo o Spring Docs . Obrigado por compartilhar isso. +1.
OO7 15/05
9

se você estiver usando o eclipse, também poderá abrir Preferências> Maven e selecionar Baixar fontes de artefatos, isso deixaria o pom.xml intacto e manteria suas fontes ou documentos java (se selecionados) apenas para desenvolvimento diretamente no local da máquina ~ / .m2

Gabriel Ramirez
fonte
7

No Eclipse

  1. Clique com o botão direito do mouse no pom.xml
  2. Selecione Run As-> Maven generate-sources
    ele irá gerar a fonte por padrão na pasta .m2

Pré-requisito:

O Maven deve ser configurado com o Eclipse.

bondkn
fonte
1
Responde a uma pergunta diferente. Esta pergunta é sobre o download de JARs de origem que não os gera.
Stephen C
5

No eclipse - clique no projeto e depois:

insira a descrição da imagem aqui.

Witold Kaczurba
fonte
Desmarquei a opção 'baixar fontes de artefatos' na configuração eclipse maven, para que ele faça o download apenas do jar. Mas, por último, tentei usar esta solução para baixar a fonte, ela falhou sem nenhuma mensagem. Eu removi a pasta jar no repositório local maven e baixei o jar novamente, depois o jar de origem baixou com sucesso. Eu acho que isso ocorre porque o repositório local maven tem o jar, então não posso usar esse método para baixar o código-fonte.
Frank
4

Você pode, se eles forem carregados. Geralmente eles são chamados de "frameworkname-version-source (s)"

Bozho
fonte
4

NetBeans, clique em contexto

No NetBeans 8 com um projeto orientado por Maven, basta clicar no contexto no item da lista de arquivos jar da dependência em que você está interessado. Escolha Download Sources. Aguarde um momento e o NetBeans baixará e instalará automaticamente o código-fonte, se disponível.

Da mesma forma, você pode optar Download Javadocpor instalar o documento localmente. Em seguida, você pode clicar em algum código no editor e optar por ver o JavaDoc.

captura de tela do item de menu de contexto "Fontes de download" sendo escolhido em um projeto do NetBeans 8 conduzido por Maven

Basil Bourque
fonte
3

Com base na observação do console do Maven no Eclipse (Kepler), as fontes serão baixadas automaticamente para uma dependência do Maven se você tentar abrir uma classe da referida dependência do Maven no editor para o qual você ainda não possui as fontes baixadas. Isso é útil quando você não deseja obter o código-fonte para todas as suas dependências, mas não sabe quais deseja antecipadamente (e está usando o Eclipse).

Acabei usando a abordagem de @ GabrielRamierez , mas empregarei a abordagem de @ PascalThivent daqui para frente.

eebbesen
fonte
2

Se você conhece o groupId e o aritifactId , pode gerar um URL de download como este.

    <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/

e você terá uma página como essa, escolheu a versão que precisa, apenas divirta-se! insira a descrição da imagem aqui

insira a descrição da imagem aqui

senninha
fonte
1

Eu também usei o plugin eclipse para colocar o projeto no espaço de trabalho do eclipse. Desde que eu trabalhei em um projeto diferente, vi que é possível trabalhar com o eclipse, mas sem o maven-eclipse-plugin. Isso facilita o uso em diferentes ambientes e permite o uso fácil do maven over eclipse. E isso sem alterar o arquivo pom.xml.

Então, eu recomendo a abordagem de Gabriel Ramirez.

eeezyy
fonte
0

Para depuração, você também pode usar um "Java Decompiler", como: JAD e descompilar a fonte em tempo real (embora a fonte gerada nunca seja a mesma que a original). Em seguida, instale o JAD como um plug-in no Eclipse ou no seu IDE favorito.

atom88
fonte
0

Os repositórios Maven fornecem uma maneira simples de baixar fontes jar.

Vou explicá-lo usando uma demonstração para "spring-boot-actuator-autoconfigure".

  1. Vá para o repositório maven - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. A página lista várias versões. Clique no item desejado, digamos, 2.1.6.RELEASE - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE
  3. A página tem o link "Visualizar tudo" ao lado de "Arquivos". Clique nele - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. A página lista vários arquivos, incluindo o de fontes - 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

Caso contrário, você sempre pode "git clone" o repositório do github, se estiver lá, e obter o código específico.

Conforme explicado por outros, você pode usar o comando "mvn dependency: sources" no comando get e gerar fontes para a dependência que você está usando.

Nota: Algumas dependências não terão o sources.jar, pois elas não contêm código fonte, mas um arquivo pom. por exemplo , acionador de partida de inicialização por mola . Como neste caso:

As POMs iniciais são um conjunto de descritores de dependência convenientes que você pode incluir em seu aplicativo. Você obtém um balcão único para toda a tecnologia Spring e relacionada que você precisa, sem precisar procurar o código de exemplo e copiar e colar cargas de descritores de dependência.

Referência: introdução aos iniciantes de inicialização por mola

Manojkumar Khotele
fonte
0

No IntelliJ IDEA, você pode fazer o download das fontes de artefato automaticamente enquanto importa, ativando a opção Baixar fontes automaticamente:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

insira a descrição da imagem aqui

Saikat
fonte
0

Se você deseja encontrar o arquivo jar de origem para qualquer um dos artefatos manualmente, vá para o local do repositório maven para o artefato específico e, em Arquivos, clique em 'ver Tudo'. Você pode encontrar o arquivo jar de origem.

Naresh Muthyala
fonte