Obter arquivos jar de origem anexados às dependências gerenciadas pelo Eclipse for Maven


176

Estou usando o Maven (e a Integração do Maven Eclipse) para gerenciar as dependências dos meus projetos Java no Eclipse. O recurso de download automático de arquivos JAR dos repositórios Maven economiza em tempo real. Infelizmente, ele não inclui a documentação da API e o código-fonte.

Como configurar o Maven para obter automaticamente também os anexos de origem e javadoc e registrá-los corretamente no Eclipse?


Pergunta relacionada perguntando como sempre fazer download de fontes e javadoc ao usar o maven: stackoverflow.com/questions/5780758/…
— Flow

Respostas:


226

Estou certo de que o plugin m2eclipse Maven para Eclipse - ao contrário - pode fazer isso. Você pode configurá-lo para baixar os arquivos de origem e o javadoc automaticamente para você.

Isso é alcançado em Janela> Preferências> Maven e verificando as opções "Fazer download de fontes de artefato" e "Fazer download de artefato JavaDoc".

Captura de tela das preferências do Maven


Sim, eu comecei a usar o m2eclipse, e isso leva o carro disso (e muitas outras coisas).
— Thilo

44
Nenhuma dessas respostas é resposta. Por que eles estão sendo votados? Consegui fazer o download das fontes clicando com o botão direito do mouse no projeto na visualização Navigator e escolhendo "m2 Maven" -> "Download Sources". Pude clicar em comando (mac) na classe para navegar até a fonte vinculada.
— precisa

8
Parece que se o JAR compilado já tiver sido baixado, o Eclipse não tentará obter os JARs de origem / Javadoc imediatamente. Parece que modificar um POM contendo uma dependência nos POMs para os quais desejo a origem / Javadoc no Eclipse e salvar o POM faz o download da origem / Javadoc para as dependências, mesmo se o JAR compilado já estiver no cache do repositório Maven.
— Francis Gagné

13
@Francis - Depois de fazer as alterações acima, clique com o botão direito do mouse em seu projeto e selecione "Maven> Atualizar projeto ..." Isso fará com que os seus jars de origem sejam baixados.
— carbontax

3
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

127
mvn eclipse:eclipse -DdownloadSources=true

ou

mvn eclipse:eclipse -DdownloadJavadocs=true

ou você pode adicionar os dois sinalizadores, como Spencer K aponta.

Além disso, a =trueparte não é necessária, para que você possa usar

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs

8
ou ambos! mvn eclipse: eclipse -DdownloadSources = true -DdownloadJavadocs = true Isso funciona apenas se a fonte e os javadocs foram fornecidos ao repositório do qual você está baixando. Às vezes, eles não são fornecidos como o Spring.
— Spencer Kormos

2
A primavera agora os fornece.
— Robin Green

Observe que esta resposta tem mais de 10 anos. Use o plug-in m2e no eclipse, em vez de ter que criar arquivos de configuração do eclipse.
— Thorbjørn Ravn Andersen

71

As outras respostas neste trabalho, mas se você quiser evitar ter que se lembrar dos argumentos da linha de comando, também poderá adicionar a configuração downloadSources e downloadJavadocs à seção maven-eclipse-plugin do seu pom.xml:

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

eu seria capaz de definir isso em um nível por dependência?
— Marcorossi 11/11

@marcorossi Desculpe, não tenho certeza se isso é possível.
— overthink

Não estou convencido de que isso seja apropriado. Certamente as configurações de download de fonte e Javadoc são uma preferência do usuário, não uma preocupação no nível do projeto? Veja minha resposta abaixo para saber como colocar isso no settings.xmlarquivo.
— Duncan Jones

Recebi este aviso: [AVISO] 'build.plugins.plugin.version' para org.apache.maven.plugins: o maven-eclipse-plugin está ausente. Para corrigir isso, você pode adicionar algo como isto abaixo <artifactId>: <version> 2.9 </version> #
— Christiaan

16

Prefiro não colocar as configurações de download de origem / Javadoc no pom.xmlarquivo do projeto, pois sinto que essas são preferências do usuário, não propriedades do projeto. Em vez disso, eu os coloco em um perfil no meu settings.xmlarquivo:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <profiles>
    <profile>
      <id>sources-and-javadocs</id>
      <properties>
        <downloadSources>true</downloadSources>
        <downloadJavadocs>true</downloadJavadocs>
      </properties>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>sources-and-javadocs</activeProfile>
  </activeProfiles>
</settings>

1
Copiei esse settings.xml em .m2, no entanto, fontes e javadocs não estão sendo copiados. O comando a seguir explicitamente na CLI traz as fontes e os javadocs: dependência mvn: dependência das fontes: resolve -Dclassifier = javadoc Quaisquer pensamentos?
— Arun Gupta

Talvez isso funcione, mas por favor explique, como o plugin maven eclipse deve encontrar essas definições de configuração? Você acha que procura propriedades globais?
— Chrisinmtown

9

Clique com o botão direito do mouse em projeto -> maven -> fontes de download


3
Todo mundo disse como habilitá-lo e não como fazer o download das fontes! depois de ativar a opção
— Chad

8

Se os jars de origem estiverem no repositório local e você estiver usando o Eclipses, eles serão automaticamente anexados. Você pode executar o mvn dependency:sourcesdownload de todos os frascos de origem para um determinado projeto. Não tenho certeza de como fazer o mesmo com a documentação.


Isso funcionou para mim. Após a execução mvn dependency:sources, consegui clicar no Eclipse para ler a fonte. Não é necessário sujeira adicional com m2e. Para baixar os javadocs que você faz mvn dependency:sources -Dclassifier=javadoc.
— Mat Gessel 5/05

4

Se você estiver usando meclipse, faça

janela -> maven -> Fazer Download das Fontes de Artefato (marque a seleção)

(Se você ainda receber a janela de fonte de anexação, clique no botão anexar arquivo e feche a janela de fonte de anexação. Na próxima vez em que tentar ver a fonte, ela abrirá a fonte correta)

Surajz



3

Eu tentei windows-> pref ..-> Maven Mas não estava funcionando. Portanto, criei um novo caminho de classe com o comando mvn eclipse: eclipse -DdownloadSources = true e atualizei o espaço de trabalho uma vez. voila .. Fontes foram anexadas.

A entrada do jar de origem está disponível no caminho da classe. Portanto, o novo build resolveu o problema ...


Com sua solução, posso escolher para qual módulo quero obter fontes. Simplesmente entre nesse módulo e construa com "mvn eclipse: clean eclipse: eclipse -DdownloadSources = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true". Obrigado :)
— vishwarajanand

2

na minha versão do Helios Eclipse com m2Eclipse não há

window --> maven --> Download Artifact Sources (select check)

Sob a janela é apenas "nova janela", "novo editor" "perspectiva aberta" etc.

Se você clicar com o botão direito do mouse no seu projeto, escolha maven -> download sources

Nada acontece. nenhuma fonte é baixada, nenhum arquivo pom é atualizado, nenhuma janela é exibida perguntando quais fontes.

Fazer mvn xxx fora do eclipse é perigoso - alguns comandos não funcionam com m2ecilpse - fiz isso uma vez e perdi o projeto inteiro, tive que reinstalar o eclipse e começar do zero.

Ainda estou procurando uma maneira de obter ecilpse e maven para encontrar e usar a fonte de frascos externos como servlet-api.


2

Mudar o pom do maven-eclipse-plugin para incluir source / javadoc apenas solicita que novas dependências sejam adicionadas ao pom. Se precisarmos solicitar dependências existentes, devemos executar mvn dependency: sources. Eu verifiquei isso.


2

Verificar a fonte de download / javadoc na preferência Eclipse-Maven, às vezes não é suficiente. No caso de o maven falhar ao fazer o download por algum motivo (um blecaute na rede?), O maven cria alguns arquivos * .lastUpdated e nunca mais será baixado novamente. Minha solução empírica foi excluir o diretório de artefatos de .m2 / repository e reiniciar o espaço de trabalho do eclipse com a fonte de download / javadoc marcada e atualizar os projetos na inicialização também. Após o espaço de trabalho ter sido reiniciado, talvez alguns projetos possam ser marcados com erro, enquanto o progresso do eclipse estiver sendo baixado, qualquer erro será limpo. Talvez este procedimento não seja tão "científico", mas para mim foi bem-sucedido.


1

Eu adicionei a configuração pom ao plugin maven-eclipse para baixar o código-fonte e os javadocs, mas acho que espero que isso aconteça para novas dependências, e não para as existentes.

Para dependências existentes, naveguei no explorador de pacotes até "Dependências do Maven" e cliquei com o botão direito do mouse em commons-lang-2.5.jar, selecionado Maven | Baixe Fontes e ... nada pareceu acontecer (nenhuma barra de progresso ou indicação de que estava fazendo alguma coisa). No entanto, ele foi baixado, pois agora eu posso ir para a fonte em commons-lang.


1

pense demais usando a configuração no pom:

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

Primeiro, pensei que isso ainda não anexaria o javadoc e o sources (como tentei sem êxito com a opção -DdownloadSources antes).

Mas surpresa: o arquivo .classpath está recebendo suas fontes e javadoc anexados ao usar a variante POM!


1

Para Indigo (e provavelmente Helios), as caixas de seleção mencionadas acima estão localizadas aqui:

Janela -> Preferências -> Maven


0

Eu tive um problema semelhante, e a solução que funcionou melhor para mim foi incluir a fonte no mesmo jar que o código compilado (para que um determinado diretório no jar incluísse ambos Foo.javae Foo.class). O Eclipse associa automaticamente a fonte ao código compilado e fornece automaticamente o JavaDoc a partir da fonte. Obviamente, isso só é útil se você controlar o artefato.


0

Após definir as propriedades no nível do projeto ou nas propriedades do usuário, faça um Maven -> Atualizar projeto (Forçar atualização). Ele baixa as fontes

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.