Como adicionar um diretório de origem extra para o maven compilar e incluir no jar de construção?
95
Além de src / main / java, estou adicionando um diretório src / bootstrap que desejo incluir em meu processo de construção, em outras palavras, quero que o maven compile e inclua os códigos-fonte lá em minha construção. Quão!?
Pergunta simples: por que não mover o código-fonte para src / main / java? Ou crie um projeto / módulo maven separado que contenha o código e defina-o como dependência.
khmarbaise de
7
No meu caso, preciso adicionar uma pasta de fontes geradas, que prefiro residir dentro do destino.
djjeck
Como alternativa, pode-se querer colocar testes de integração em diretórios diferentes dos src/{main,test}/contados aqui
O eclipse realmente reconhece essa pasta como uma pasta buildpathpara qualquer pessoa? porque não para mim. FWIW, eu uso m2epara importar o projeto.
mystarrocks
Ótima resposta, só para esclarecer, você deve substituir seu maven-compiler-plugin pelas linhas acima ...
Colin
Funciona no IntelliJ também.
Alexander Klimetschek de
1
O Eclipse me pediu para instalar um plug-in para m2e, o conector auxiliar de construção. Eu fiz isso e o erro do ciclo de vida desapareceu.
Alexis Dufrenoy
1
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: add-source, phase: generate-sources)recebendo este erro
Katie de
35
NOTA: Esta solução irá apenas mover os arquivos fonte java para o diretório target / classes e não irá compilar os fontes.
Parece que você precisa remover a ** exclusão da pasta adicionada no caminho de construção do Eclipse, embora :(
Dormouse
@Dormouse você pode explicar por favor?
Saikat
1
Não funciona com o IntelliJ, ele será visto <resource>como uma pasta "Resource", mas não como uma pasta "Source", por exemplo, não compilará os arquivos-fonte Java dentro deles.
Alexander Klimetschek de
4
Esta solução irá apenas mover os arquivos fonte java para o diretório target / classes e não irá compilar os fontes
Isso substitui o diretório src / main / java padrão. Se quiser vários diretórios, você também deve especificar o diretório padrão.
Natix
2
A questão é como adicionar vários diretórios de origem e você está propondo um método para adicionar apenas um diretório de origem, que é o oposto do que é solicitado.
João Matos
1
Com as versões recentes do Maven (3) e a versão recente do plug-in do compilador maven (3.7.0), noto que adicionar uma pasta de origem com o build-helper-maven-pluginnão é necessário se a pasta que contém o código-fonte a ser adicionado à compilação estiver localizada no targetpasta ou uma subpasta dela.
Parece que o plugin do compilador maven compila qualquer código-fonte java localizado dentro desta pasta, seja qual for o diretório que os contém.
Por exemplo, tendo alguns (gerado ou não) em código fonte target/a, target/generated-source/fooserá compilado e adicionado na OutputDirectory: target/classes.
Por que as pessoas votam negativamente? Basicamente, a mesma resposta de saiky0 (que tem votos positivos), mas anterior?
Friso
15
@Friso porque não está correto. Adicionar um diretório de recursos adicionará recursos (arquivos copiados target/classes, mas não compilados). Esta pergunta é sobre a adição de um diretório de origem, que detém os arquivos que serão compilados em target/classes, não copiado.
src/{main,test}/
contados aquiRespostas:
Você pode usar o Build Helper Plugin , por exemplo:
fonte
buildpath
para qualquer pessoa? porque não para mim. FWIW, eu usom2e
para importar o projeto.Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: add-source, phase: generate-sources)
recebendo este erroAtualize o
pom.xml
como -fonte
<resource>
como uma pasta "Resource", mas não como uma pasta "Source", por exemplo, não compilará os arquivos-fonte Java dentro deles.http://maven.apache.org/guides/mini/guide-using-one-source-directory.html
Veja também
Maven compila com vários diretórios src
fonte
Com as versões recentes do Maven (3) e a versão recente do plug-in do compilador maven (3.7.0), noto que adicionar uma pasta de origem com o
build-helper-maven-plugin
não é necessário se a pasta que contém o código-fonte a ser adicionado à compilação estiver localizada notarget
pasta ou uma subpasta dela.Parece que o plugin do compilador maven compila qualquer código-fonte java localizado dentro desta pasta, seja qual for o diretório que os contém.
Por exemplo, tendo alguns (gerado ou não) em código fonte
target/a
,target/generated-source/foo
será compilado e adicionado na OutputDirectory:target/classes
.fonte
Você pode adicionar os diretórios para o seu processo de construção, como:
O src / main / java é o caminho padrão que não precisa ser mencionado no pom.xml
fonte
target/classes
, mas não compilados). Esta pergunta é sobre a adição de um diretório de origem, que detém os arquivos que serão compilados emtarget/classes
, não copiado.