Respuestas:
Puede agregar un nuevo directorio de origen con 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á dentro /project/build/plugins
y NO dentro/project/build/pluginManagement/plugins
m2e connector for build-helper-maven-plugin
a partir del mercado Eclipse para eliminar el error en pom.xml
'build.plugins.plugin.version' for org.codehaus.mojo:build-helper-maven-plugin is missing
que necesita agregar dentro de <plugin>
la etiqueta<version>1.12</version>
Ingenuamente lo hago de esta manera:
<build>
<finalName>osmwse</finalName>
<sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory>
</build>
Esto funciono para mi
<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
, y posiblemente adicional sources
, como las raíces de los archivos fuente. En su solución, maven-compiler-plugin
es el único complemento que conoce estas raíces reales.
para que funcione en intelliJ, también puede agregar
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
a maven-compiler-plugin
Esto también funciona con maven definiendo la etiqueta de recursos. Puedes nombrar los nombres de tus carpetas src como quieras.
<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
Esto funcionó con maven 3.5.4 y ahora Intellij Idea ve este código como fuente:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
</configuration>
</plugin>
Usé el plugin build-helper-maven-del post - y actualicé src / main / generado. Y mvn clean compile funciona en mi ../common/src/main/java, o en ../common, así que mantuve este último. Entonces sí, confirmando que el nivel de compilación de IntelliJ IDEA (ver 10.5.2) falló como lo mencionó David Phillips. El problema era que IDEA no agregó otra raíz fuente al proyecto. Agregarlo manualmente resolvió el problema. No es bueno, ya que editar cualquier cosa en el proyecto debe provenir de maven y no de la edición directa de las opciones de proyecto de IDEA. Sin embargo, podré vivir con él hasta que admitan build-helper-maven-plugin directamente, de modo que agregue automáticamente las fuentes.
Luego necesité otra solución para que esto funcione. Como cada vez que IDEA reimportó la configuración de Maven después de un cambio de pom, la fuente recién agregada se mantuvo en el módulo, pero perdió sus selecciones de Carpetas de origen y fue inútil. Entonces, para IDEA, debe configurar estos una vez:
Ahora, mantener esas carpetas importadas tampoco es la mejor práctica del mundo, ..., pero intentarlo.
Si bien la respuesta de evokk es básicamente correcta, faltan clases de prueba . Debe agregar clases de prueba con el 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>
Esto se puede hacer en dos pasos:
${build.directory}
Si trabaja con Jetty iniciado ( jetty:run
), la recompilación de cualquier clase en cualquier módulo (con Maven, IDEA o Eclipse) conducirá al reinicio de Jetty. El mismo comportamiento que obtendrá para los recursos modificados.
En la configuración, puede 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 son todas las configuraciones disponibles para la versión 3.8.1 del complemento del compilador. Las diferentes versiones tienen diferentes configuraciones que puede encontrar ejecutando su código -X
después del comando general mvn. Me gusta
mvn clean install -X
mvn compiler:compile -X
y busque con ID u objetivo o nombre del complemento Esto puede ayudar con otros complementos también. Eclipse, intelliJ puede no mostrar todas las configuraciones como sugerencias.