Respostas:
Você pode adicionar um novo diretório de origem com o build-helper:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/generated</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
plugin
elemento está em /project/build/plugins
e não/project/build/pluginManagement/plugins
m2e connector for build-helper-maven-plugin
de mercado eclipse para remover o erro no pom.xml
'build.plugins.plugin.version' for org.codehaus.mojo:build-helper-maven-plugin is missing
você precisa adicionar dentro <plugin>
da tag<version>1.12</version>
Eu ingenuamente faço desta maneira:
<build>
<finalName>osmwse</finalName>
<sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory>
</build>
Isso funcionou para mim
<build>
<sourceDirectory>.</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<includes>
<include>src/main/java/**/*.java</include>
<include>src/main2/java/**/*.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
sourceDirectory
- e possivelmente adicional sources
- como as raízes dos arquivos de origem. Na sua solução, o maven-compiler-plugin
é o único plug-in ciente dessas raízes reais.
para fazê-lo funcionar no inteliJ, você também pode adicionar
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
para maven-compiler-plugin
Isso também funciona com o maven, definindo a etiqueta de recursos. Você pode nomear os nomes de pastas src como desejar.
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.java</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.java</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/generated</directory>
<includes>
<include>**/*.java</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
Resources are not (usually) code. They are not compiled
Isso funcionou com o maven 3.5.4 e agora o Intellij Idea vê esse código como fonte:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
</configuration>
</plugin>
Utilizou o build-helper-maven-plugin da postagem - e atualize src / main / gerados. E o mvn clean compile funciona no meu ../common/src/main/java, ou no ../common, então mantive o último. Sim, confirmando que o nível de compilação do IntelliJ IDEA (versão 10.5.2) falhou, como David Phillips mencionou. O problema foi que o IDEA não adicionou outra raiz de origem ao projeto. Adicioná-lo manualmente resolveu o problema. Não é legal, pois a edição de qualquer coisa no projeto deve vir do maven e não da edição direta das opções do projeto da IDEA. No entanto, poderei viver com ele até que eles suportem o build-helper-maven-plugin diretamente, de forma que ele adicione automaticamente as fontes.
Em seguida, precisava de outra solução alternativa para fazer isso funcionar. Desde que cada vez que a IDEA reimportava as configurações do maven, após uma mudança de endereço, a fonte recém-adicionada era mantida no módulo, mas perdia as seleções de Pastas de origem e era inútil. Portanto, para a IDEA - é necessário configurá-los uma vez:
Agora, manter essas pastas importadas também não é a melhor prática do mundo, ..., mas tentar.
Embora a resposta do evokk esteja basicamente correta, faltam aulas de teste . Você deve adicionar classes de teste com o objetivo add-test-source :
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated/some-test-classes</source>
</sources>
</configuration>
</execution>
Isso pode ser feito em duas etapas:
${build.directory}
Se você trabalha com o Jetty iniciado ( jetty:run
), a recompilação de qualquer classe em qualquer módulo (com Maven, IDEA ou Eclipse) levará ao reinício do Jetty. O mesmo comportamento que você terá para recursos modificados.
Na configuração, você pode usar <compileSourceRoots>
.
oal: org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-cli)
[DEBUG] Style: Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
<basedir default-value="${basedir}"/>
<buildDirectory default-value="${project.build.directory}"/>
<compilePath default-value="${project.compileClasspathElements}"/>
<compileSourceRoots default-value="${project.compileSourceRoots}"/>
<compilerId default-value="javac">${maven.compiler.compilerId}</compilerId>
<compilerReuseStrategy default-value="${reuseCreated}">${maven.compiler.compilerReuseStrategy}</compilerReuseStrategy>
<compilerVersion>${maven.compiler.compilerVersion}</compilerVersion>
<debug default-value="true">${maven.compiler.debug}</debug>
<debuglevel>${maven.compiler.debuglevel}</debuglevel>
<encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding>
<executable>${maven.compiler.executable}</executable>
<failOnError default-value="true">${maven.compiler.failOnError}</failOnError>
<failOnWarning default-value="false">${maven.compiler.failOnWarning}</failOnWarning>
<forceJavacCompilerUse default-value="false">${maven.compiler.forceJavacCompilerUse}</forceJavacCompilerUse>
<fork default-value="false">${maven.compiler.fork}</fork>
<generatedSourcesDirectory default-value="${project.build.directory}/generated-sources/annotations"/>
<maxmem>${maven.compiler.maxmem}</maxmem>
<meminitial>${maven.compiler.meminitial}</meminitial>
<mojoExecution default-value="${mojoExecution}"/>
<optimize default-value="false">${maven.compiler.optimize}</optimize>
<outputDirectory default-value="${project.build.outputDirectory}"/>
<parameters default-value="false">${maven.compiler.parameters}</parameters>
<project default-value="${project}"/>
<projectArtifact default-value="${project.artifact}"/>
<release>${maven.compiler.release}</release>
<session default-value="${session}"/>
<showDeprecation default-value="false">${maven.compiler.showDeprecation}</showDeprecation>
<showWarnings default-value="false">${maven.compiler.showWarnings}</showWarnings>
<skipMain>${maven.main.skip}</skipMain>
<skipMultiThreadWarning default-value="false">${maven.compiler.skipMultiThreadWarning}</skipMultiThreadWarning>
<source default-value="1.6">${maven.compiler.source}</source>
<staleMillis default-value="0">${lastModGranularityMs}</staleMillis>
<target default-value="1.6">${maven.compiler.target}</target>
<useIncrementalCompilation default-value="true">${maven.compiler.useIncrementalCompilation}</useIncrementalCompilation>
<verbose default-value="false">${maven.compiler.verbose}</verbose>
</configuration>
estas são todas as configurações disponíveis para a versão 3.8.1 do plug-in do compilador. Versões diferentes têm configurações diferentes que você pode encontrar executando seu código -X
após o comando geral mvn. Gostar
mvn clean install -X
mvn compiler:compile -X
e pesquise com o ID, objetivo ou nome do plug-in. Isso também pode ajudar com outros plug-ins. Eclipse, intelliJ pode não mostrar todas as configurações como sugestões.