¿Hay alguna manera de compilar múltiples directorios fuente java en un único proyecto maven?Maven compila con múltiples directorios src
Respuesta
Puede agregar un nuevo directorio de origen con la acumulación de ayudante:
<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>
Esto funcionó para mí
<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>
No es una buena idea en mi humilde opinión este tipo, ya que varios plugins asumen el 'sourceDirectory' - y posiblemente adicional' sources' - como las raíces de los archivos de origen. En su solución, el 'maven-compiler-plugin' es el único complemento que conoce estas raíces reales. –
@Laurent Tienes razón sobre eso. Esta fue una buena idea hace un par de años, pero ahora hay opciones mucho mejores. build-helper enumerado arriba es mis opciones preferidas. – sal
Esto no lo agrega al modelo de proyecto, por lo que no funcionará correctamente en IDEs. –
Se utiliza la acumulación de ayudante-maven-plugin desde el cargo - y actualización src/main/generado. Y mvn clean compile funciona en mi ../common/src/main/java, o en ../common, así que guardé el último. Entonces sí, confirmando que el nivel de IntelliJ IDEA (ver 10.5.2) de la compilación falló como lo mencionó David Phillips. El problema era que IDEA no agregó otra raíz de origen al proyecto. Agregarlo solucionó el problema manualmente. No es agradable, ya que editar todo en el proyecto debería 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 admita build-helper-maven-plugin directamente de manera que agregue automáticamente las fuentes.
Luego necesitábamos 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. Así, por IDEA - necesidad de establecer estos una vez:
- Select - Configuración del proyecto/Maven/Importar/mantener la fuente y prueba carpetas en reimportación.
- Agregar - Estructura del proyecto/Configuración del proyecto/Módulos/{Módulo}/Fuentes/Agregar raíz de contenido.
Ahora, mantener esas carpetas en importación tampoco es la mejor práctica en el mundo, ..., pero intentarlo.
Ninguna opción funciona con IntelliJ Idea 9.0.4 que es lo que uso. No he probado las opciones de build-helper con el Eclipse reciente, pero no funcionó con 3.4 y el plugin m2 cuando lo probé. A Maven no le gustan los árboles fuente múltiples o los artefactos múltiples construidos desde el mismo proyecto, cualquier intento de evitar esta limitación suele ser un hack horrible. – sal
He estado en IntelliJ durante muchos años. Y nunca cambié a eclipse, así que no puedo hablar por eso, y luego oír que generalmente también es muy bueno. Para IntelliJ La actualización de una licencia personal cada dos años es de $ 100/año. Las nuevas versiones principales suelen salir todos los años en enero. Luego, en los últimos 2 o 3 meses del año anterior, le permiten comprar la versión anterior y obtener la actualización a la próxima gratis. Esto está en marcha ahora, así que es el momento "seguro" para comprar 10 y obtener 11. Además, si no necesita JSP y otras características empresariales, use la edición gratuita de la comunidad. – arntg
a hacer que funcione en IntelliJ, también se puede añadir
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
a Maven-compilador-plugin
Me gustaría agregar que esto también funcionó en Eclipse para agregar las fuentes generadas como una ubicación de origen en la configuración del proyecto. –
Sin embargo, esta ruta parece ser para las fuentes generadas por los procesadores de anotación. Incluso si funciona, es posible que esta ruta sea manejada de manera diferente por algunos complementos. Por ejemplo, espero que este directorio se pueda eliminar cuando se ejecute 'clean'. – Kapep
Esto se puede hacer en dos pasos:
- Para cada directorio de origen deberías crear tu propio módulo.
- En todos los módulos se debe especificar el mismo directorio de construcción:
${build.directory}
Si trabaja con embarcadero comenzado (jetty:run
), entonces recompilación de cualquier clase en cualquier módulo (con Maven, IDEA o Eclipse) dará lugar a Jetty's restart. El mismo comportamiento que obtendrá para los recursos modificados.
Esto también funciona con maven definiendo la etiqueta de recursos. Puede nombrar sus nombres de carpeta src lo que quiera.
<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>
http://maven.apache.org/pom.html#Resources -> 'Los recursos no son (normalmente) código. No están compilados' – SJuan76
Eso es correcto. – sendon1982
ingenuamente hacerlo de esta manera:
¿Esto todavía funciona? –
Funcionó para mí :) Sin embargo, a Eclipse no parece gustarle. Parece pensar que "src/main/java, src/interfaces" es un src único, y por lo tanto lo marca como (falta). – Joel
¡¡Funciona para mí en Maven 3.3.9 !!! Esta debería ser la respuesta aceptada. –
- 1. Crear javadoc con múltiples directorios src
- 2. Maven estructura de directorios
- 3. scons: src y directorios incluyen
- 4. Compilar directorios de fuentes múltiples con g ++
- 5. Compila múltiples archivos C con make
- 6. Cambiando la estructura de Maven (src/java a src/Javasource)
- 7. Maven compila la aplicación de Android - BuildConfig
- 8. Directorios de aplicaciones múltiples con Dancer perl
- 9. Maven - cómo incluir directorios vacíos
- 10. Cómo empaquetar proyectos maven de múltiples módulos con módulos anidados
- 11. autoload y directorios múltiples
- 12. sass viendo múltiples directorios
- 13. Maven: Adjuntar múltiples artefactos
- 14. Colmena: creación de tablas con varios archivos con múltiples directorios
- 15. ¿Cómo eliminar múltiples directorios virtuales?
- 16. maven artifact repository estructura de directorios especificaciones
- 17. Múltiples implementaciones en maven
- 18. Múltiples archivos pom.xml maven
- 19. Buscar un archivo en el directorio con múltiples directorios
- 20. Conjuntos de pruebas múltiples en Maven
- 21. proyecto Java convención estructura de directorios
- 22. ¿por qué este código compila con el compilador de eclipse pero no con javac (maven)
- 23. ¿Cómo compila maven solo los archivos java modificados?
- 24. ¿Puedo usar JAVAC para compilar un proyecto con múltiples archivos y directorios?
- 25. ¿Cómo usar genstrings en múltiples directorios?
- 26. jQuery seleccionar img con src
- 27. Cambiando IMG SRC con Javascript
- 28. Cambiar iframe src con Javascript
- 29. Recurso de src/main/resources no encontrado después de construir con maven
- 30. JavaRebel con un proyecto empresarial de múltiples módulos en Maven
El único problema con este enfoque es que el artefacto final también incluye los archivos fuente java (archivos .java). ¿Hay alguna forma de excluir los archivos fuente e incluir solo los archivos .class? –
solo una nota para otros (como yo), el elemento 'plugin' está en'/project/build/plugins' y NO en '/ project/build/pluginManagement/plugins' – Betlista
@saravana_pc no tiene este problema ... – Lyth