setup - intellij java 6
No se puede usar Intellij con una carpeta de fuentes generadas (6)
La solución
Vaya a Estructura del proyecto - Módulos - Carpetas de origen y busque el target/generated-sources/antlr4/com/mycompany
- haga clic en Editar propiedades y configure el prefijo del paquete en com.mycompany
.
Esta es exactamente la razón por la que podemos establecer el prefijo del paquete en los directorios de origen.
Problema diferente pero relacionado here
Pregunta relacionada Cómo configurar IntelliJ IDEA y / o Maven para agregar automáticamente directorios con el código fuente de Java generado usando jaxb2-maven-plugin?
Tengo un complemento personalizado que genera fuentes en target/generated-sources
(Note que no hay nombre de herramienta aquí). Así que obtengo fuentes como target/generated-sources/com/mycompany
... etc.
Este formato no puede modificarse en absoluto, así que podré configurar Intellij para que lo agregue como carpeta de origen. A partir de ahora, puedo ver que Intellij ha agregado target/generated-sources/com
como la carpeta de origen.
Tenga en cuenta que no tengo la opción de configurar el complemento.
ACTUALIZACIÓN 1 : No estoy de acuerdo con el hecho de que DEBO colocar mis fuentes generadas bajo una carpeta de nombre de herramienta. Puede ser una buena convención, pero si solo tengo un generador, ¿no es necesario que lo coloque allí? Nuevamente, en mi pom.xml tengo una sección de resources
que indica claramente que target/generated-sources
deben tratarse como una carpeta fuente. Esto funciona perfectamente bien en Eclipse, así que no tengo idea de por qué Intellij no respetaría mi configuración.
TL; DR -> Cuando coloco target/generated-sources
en la sección de recursos de pom.xml
¿por qué Intellij es demasiado entusiasta para agregar target/generated-sources/com
a classpath?
¿Tal vez puede agregar un paso a la fase generar fuentes que mueve la carpeta?
Con gradle, la configuración del proyecto se borrará siempre que actualice la configuración de Gradle. En su lugar, necesita agregar las siguientes líneas (o similar) en su build.gradle, estoy usando kotlin así:
sourceSets {
main {
java {
srcDir "${buildDir.absolutePath}/generated/source/kapt/main"
}
}
}
Puede simplemente cambiar la estructura del proyecto para agregar esa carpeta como un directorio "fuente".
Estructura del proyecto → Módulos → Haga clic en la carpeta de generated-sources
y conviértala en una carpeta de sources
.
O:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>test</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${basedir}/target/generated-sources</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
Quien escribió ese plugin lo arruinó a lo grande. ¡Esa no es la manera de hacerlo!
Cualquier solución alternativa sería un hack enorme, haga que el desarrollador del complemento tenga conocimiento de su error.
Lo siento, eso es lo único que puedo hacer.
OK, aquí hay un truco, directamente después de la ejecución de su complemento, use el plugin antrun para mover el directorio a otro lugar:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>process-sources</phase>
<configuration>
<target>
<move todir="${project.build.directory}/generated-sources/toolname/com"
overwrite="true">
<fileset dir="${project.build.directory}/generated-sources/com"/>
</move>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
En este ejemplo, toolname
debe reemplazarse por cualquier elemento que identifique de forma única el complemento que creó el código y com
representa la raíz de los paquetes creados. Si tiene varias raíces de paquetes, probablemente necesite múltiples tareas de <move>
.
Pero si el complemento agrega la carpeta como carpeta de origen, entonces estás jodido.
Uso Maven (aplicación SpringBoot) Para esto, solución
- Haga clic derecho en la carpeta del proyecto
- Seleccionar Maven
- Seleccione Generar fuentes y carpetas de actualización
Luego, Intellij automáticamente importa fuentes generadas para proyectar.