Converter projeto existente do Eclipse para projeto Maven

246

Para um projeto em andamento, estamos pensando em usar o plug-in Maven para Eclipse para automatizar nossas construções. No momento, o procedimento é muito mais complicado do que deveria ser, e esperamos que o Maven simplifique as coisas para uma compilação com um clique.

Minha pergunta é: existe um assistente ou importador automático para converter um projeto Java Eclipse existente em um projeto Maven, usando o plug-in Maven? Ou devo criar um novo projeto Maven e copiar manualmente todos os arquivos de origem, bibliotecas, etc.

Tom G
fonte
3
Sua compilação existente usa um script Ant?
Matt b
4
Você provavelmente deve mudar resposta aceita
Mr_and_Mrs_D

Respostas:

141

Se você apenas deseja criar um POM padrão e ativar os recursos do m2eclipse: então, suponho que você não tenha uma configuração de compilação automatizada alternativa que esteja tentando importar e suponho que você esteja falando sobre o plugin m2eclipse.

O plug-in m2eclipse fornece uma opção de clique com o botão direito do mouse em um projeto para adicionar este pom.xml padrão:

Versões mais recentes do M2E

Clique com o botão direito do mouse em Projeto -> submenu Configurar -> Converter em projeto Maven

Versões anteriores do M2E

Clique com o botão direito do mouse em Projeto -> submenu Maven -> Ativar Gerenciamento de Dependência.

Isso fará o necessário para ativar o plug-in para esse projeto.


Para responder ', existe um importador ou assistente automático? ': não que eu saiba. Usar a opção acima permitirá que você ative o plug-in m2eclipse para o seu projeto existente, evitando a cópia manual. Você ainda precisará configurar as dependências e outras coisas necessárias para criar a si mesmo.

brabster
fonte
Embora habilite o M2Eclipse, não é realmente um assistente, não importa um projeto Eclipse existente. Em vez disso, oferece ao usuário a opção de selecionar dependências etc., o que pode ser difícil se o usuário não tiver muita experiência com o Maven.
precisa
Interpretei a pergunta como 'preciso criar um novo projeto e copiar manualmente as coisas para usar o plugin m2eclipse?', Esclarecerei.
Brabster
16
O item do menu maven não está disponível para mim no menu do botão direito (mais recente m2eclipse), a resposta de chengdong funciona.
Wulfgarpro
8
Na versão atual do Eclipse (4.2) e m2eclipse, o item de menu é Convert / Convert to Maven Project.
Jesper
12
@Jesper item de menu é "Configure / Converter para Maven Projeto"
angelcervera
293

A partir do m2e 0.13.0 (se não for anterior a), é possível converter um projeto Java em Maven no menu de contexto. Aqui está como:

  • Clique com o botão direito do mouse no projeto Java para abrir o menu de contexto
  • Selecione Configurar> Converter em projeto Maven

Aqui estão as etapas detalhadas com capturas de tela.

chengdong
fonte
30
Isso ainda não cria as estruturas de diretório e adiciona dependências no pom.
Klaus Nji
2
m2e ainda não cria a estrutura de diretórios maven e adiciona dependências no pom?
21414
2
Minha solução (@ShriKant Vashishtha) mencionada abaixo resolve todos os problemas descritos aqui. Cria estrutura Maven, espaços remove em nomes de pastas, cria pastas de origem pom.xml e movimentos na estrutura Maven
shrikant Vashishtha
Funciona perfeito e sem falhas no Windows 10 Eclipse Mars no momento.
Matthis Kohli
Funciona perfeito para mim
WitnessTruth
12

Eu estava tendo o mesmo problema e queria Mavenise todo o espaço de trabalho do eclipse contendo cerca de 60 projetos Eclipse. Fazê-lo manualmente exigia muito tempo e as opções alternativas não eram viáveis. Para resolver o problema, finalmente criei um projeto chamado eclipse-to-maven no github. Como o eclipse não tem todas as informações necessárias sobre as dependências, ele faz o seguinte:

  • Com base em <classpathentry/>elementos XML no arquivo .classpath, ele cria as dependências em outro projeto, identifica o arquivo jar da biblioteca e com base em seu nome (por exemplo, jakarta-oro-2.0.8.jar) identifica sua versão. Atualmente artifactIde groupIdsão os mesmos que não consegui encontrar algo que pudesse retornar o ID do grupo Maven da dependência com base artifactId. Embora essa não seja uma solução perfeita, ela fornece uma boa base para acelerar a Mavenização.

  • Move todas as pastas de origem de acordo com a convenção do Maven (como src/main/java)

  • Como os projetos Eclipse com nomes com espaços são difíceis de lidar no ambiente Linux / Unix, ele os renomeia também com nomes sem espaços.

  • Os arquivos pom.xml resultantes contêm as dependências e a estrutura básica do pom. Você precisa adicionar os plug-ins Maven necessários manualmente.

ShriKant Vashishtha
fonte
Interessante! É portado para Luna? O projeto ainda seria um projeto eclipse (válido .classpathe .projectarquivos)? Você poderia adicionar à sua resposta como usar seu plug-in para criar um projeto JavaSE simples - e quais seriam as mudanças reais na estrutura de diretórios?
2131414 Mr_and_Mrs_D
Desculpe, mas não sei o que é Luna. Não será mais um projeto eclipse válido à medida que a estrutura de diretórios do projeto for alterada. No entanto, é fácil criar configurações de eclipse modificadas usando o Maven. Este não é um plugin, mas uma ferramenta. Como executá-lo já é mencionado no README do projeto. A estrutura do diretório é convertida na convenção do Maven. Portanto, todas as fontes acessam src / main / java, por exemplo.
ShriKant Vashishtha 01/09/14
Luna é a versão mais recente do eclipse !!
Mr_and_Mrs_D
7

Clique com o botão direito do mouse em Nome do projeto> Configurar> Converter em projeto Maven> clique em Concluir. Aqui você adicionará algumas dependências para baixar e adicionar seu arquivo jar esperado.

Isso criará um arquivo pom.xml gerado automaticamente. Abra esse arquivo no formato xml no seu editor eclipse. Após a construção de tag ( </build>), adicione suas dependências que você pode copiar do site maven e adicione-as lá. Agora você está pronto para ir. Essas dependências adicionam automaticamente os arquivos jar necessários.

Omar Faroque Anik
fonte
1
Isso criará a estrutura da pasta maven?
21414
sim, criará a estrutura da pasta maven com base no modelo de arquétipo mapeado apropriado e na configuração mínima. Você precisa adicionar cada uma das dependências do seu projeto (de .classpath) no POM.xml manualmente, uma de cada vez.
Pratap Singh
5

A resposta de Chengdong está correta, você deve usar Configure>Convert to Maven Project. No entanto, devo acrescentar que o processo de conversão foi bastante aprimorado, pois o m2e 0.13.0: m2e 1.1+ e m2e-wtp 0.16.0+ agora podem converter as configurações do eclipse existentes na configuração do plugin maven .

Quanto à questão da conversão de dependência, você pode experimentar o recurso de integração do JBoss Tools (JBT) 4.0 Maven, que contém um assistente de conversão experimental, conectado ao processo de conversão do m2e: http://docs.jboss.org/tools/whatsnew/maven/ maven-news-4.0.0.Beta1.html .

Ele não pretende ser a solução definitiva (nada pode), pois deve ajudar muito a iniciar o processo de conversão do Maven.

Além disso, para sua informação, aqui estão algumas idéias para aprimorar o processo de conversão da m2e , a refatoração para usar o layout do Maven provavelmente será implementada no futuro.

O JBT 4.0 (requer Eclipse JavaEE Juno) pode ser instalado em http://download.jboss.org/jbosstools/updates/stable/juno/ ou no Eclipse Marketplace

Fred Bricon
fonte
4

Isso é necessário porque, mais ou menos, quando importamos um projeto do git, não é um projeto maven, portanto, as dependências maven não estão no caminho da construção.

Aqui está o que eu fiz para transformar um projeto geral em um projeto inteligente.

projeto geral -> projeto java, clique com o botão direito do mouse no projeto, propriedades-> facetas do projeto, clique em "java". Esta etapa transformará um projeto geral em projeto java.

projeto java -> projeto maven clique com o botão direito do mouse no projeto, configure -> converter em projeto maven Nesse momento, as dependências maven lib ainda não estão no caminho da construção. propriedades do projeto, caminho de construção , adicionar biblioteca, adicionar dependências automatizadas lib

E espere alguns segundos, quando as dependências forem carregadas, o projeto estará pronto!

moonshang
fonte
2

Existe um programa de linha de comando para converter qualquer projeto Java em um projeto SBT / Maven.

Ele resolve todos os frascos e tenta descobrir a versão correta com base na soma de verificação SHA, caminho de classe ou nome do arquivo. Em seguida, ele tenta compilar as fontes até encontrar uma configuração funcional. Também podem ser dadas tarefas personalizadas a serem executadas por configuração de dependência.

UniversalResolver 1.0
Usage: UniversalResolver [options]

  -s <srcpath1>,<srcpath2>... | --srcPaths <srcpath1>,<srcpath2>...
        required src paths to include
  -j <jar1>,<jar2>... | --jars <jar1>,<jar2>...
        required jars/jar paths to include
  -t /path/To/Dir | --testDirectory /path/To/Dir
        required directory where test configurations will be stored
  -a <task1>,<task2>... | --sbt-tasks <task1>,<task2>...
        SBT Tasks to be executed. i.e. compile
  -d /path/To/dependencyFile.json | --dependencyFile /path/To/dependencyFile.json
        optional file where the dependency buffer will be stored
  -l | --search
        load and search dependencies from remote repositories
  -g | --generateConfigurations
        generate dependency configurations
  -c <value> | --findByNameCount <value>
        number of dependencies to resolve by class name per jar

https://bitbucket.org/mnyx/universalresolver

Alex
fonte
Parece uma opção muito atraente. Mas, como está atualmente empacotado, não é muito acessível. Não é aparente como empacotar e implantar o source.code. A maioria dos desenvolvedores Java não são desenvolvedores Scala, nem o SBT é uma ferramenta amplamente usada na comunidade.
A. Rick
1

Minha pergunta é: existe um assistente ou importador automático para converter um projeto Java Eclipse existente em um projeto Maven, usando o plug-in Maven?

Até onde eu sei, não há nada que converta automaticamente um projeto Eclipse em um projeto Maven (ou seja, modifique o layout, crie um POM, "gere" e alimente-o com metadados, detecte bibliotecas e suas versões para adicioná-los ao POM etc). O Eclipse simplesmente não possui metadados suficientes para tornar isso possível (esse é precisamente o objetivo do POM) e / ou produzir um resultado decente.

Ou devo criar um novo projeto Maven e copiar manualmente todos os arquivos de origem, bibliotecas, etc.

Essa seria a melhor opção na minha opinião. Crie um projeto Maven, copie / mova fontes, recursos, testes, recursos de teste em seus respectivos diretórios, declare dependências etc.

Pascal Thivent
fonte
Por que essa resposta é maior que a resposta +199? Eu quase não vi esse
Evorlor
1

Para converter para Gradle é análogo ao Maven:

Clique com o botão direito do mouse em Projeto -> submenu Configurar -> Projeto Convert to Gradle (STS)

outro
fonte
4
A resposta não é relevante para a questão
Ripon Al Wasim
1
Encontrei essa pergunta procurando Gradle, muitas vezes é útil adicionar respostas para outros sistemas operacionais, em vez do sistema operacional solicitado, porque não existe uma pergunta para cada caso. Com relação a Gradle, eu não criaria uma nova pergunta para responder ao que considero útil, mas postar isso. Obrigado e cumprimentos.
outro