Réponses:
Vous pouvez ajouter un nouveau répertoire source avec 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
élément est dans /project/build/plugins
et NON dans/project/build/pluginManagement/plugins
m2e connector for build-helper-maven-plugin
depuis eclipse marketplace pour supprimer l'erreur dans pom.xml
'build.plugins.plugin.version' for org.codehaus.mojo:build-helper-maven-plugin is missing
vous devez l'ajouter dans <plugin>
la balise<version>1.12</version>
Je le fais naïvement de cette façon:
<build>
<finalName>osmwse</finalName>
<sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory>
</build>
Cela a fonctionné pour moi
<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
- et éventuellement supplémentaires sources
- que les racines des fichiers source. Dans votre solution, le maven-compiler-plugin
est le seul plugin connaissant ces racines réelles.
pour le faire fonctionner dans intelliJ, vous pouvez également ajouter
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
à maven-compiler-plugin
Cela fonctionne également avec maven en définissant la balise de ressources. Vous pouvez nommer les noms de vos dossiers src comme bon vous semble.
<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
Cela a fonctionné avec maven 3.5.4 et maintenant Intellij Idea voit ce code comme source:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
</configuration>
</plugin>
Utilisé le plugin build-helper-maven du post - et mettre à jour src / main / généré. Et mvn clean compile fonctionne sur mon ../common/src/main/java, ou sur ../common, donc gardez ce dernier. Alors oui, confirmant que le niveau IntelliJ IDEA (ver 10.5.2) de la compilation a échoué comme l'a mentionné David Phillips. Le problème était que IDEA n'a pas ajouté une autre racine source au projet. L'ajouter manuellement a résolu le problème. Ce n'est pas bien car éditer quoi que ce soit dans le projet devrait provenir de maven et non de l'édition directe des options du projet IDEA. Pourtant, je pourrai vivre avec jusqu'à ce qu'ils prennent en charge build-helper-maven-plugin directement, de sorte qu'il ajoutera automatiquement les sources.
Il fallait ensuite une autre solution de contournement pour que cela fonctionne. Depuis chaque fois que IDEA a réimporté les paramètres maven après un changement de pom, la nouvelle source ajoutée a été conservée sur le module, mais elle a perdu ses sélections de dossiers source et était inutile. Donc, pour IDEA - vous devez définir ces paramètres une fois:
Maintenant, garder ces dossiers à l'importation n'est pas non plus la meilleure pratique au monde, ..., mais l'essayer.
Bien que la réponse d'evokk soit fondamentalement correcte, il manque des classes de test . Vous devez ajouter des classes de test avec objectif 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>
Cela peut se faire en deux étapes:
${build.directory}
Si vous travaillez avec Jetty ( jetty:run
) démarré , la recompilation de n'importe quelle classe dans n'importe quel module (avec Maven, IDEA ou Eclipse) entraînera le redémarrage de Jetty. Le même comportement que vous obtiendrez pour les ressources modifiées.
Dans la configuration, vous pouvez utiliser <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>
ce sont toutes les configurations disponibles pour la version 3.8.1 du plugin du compilateur. Différentes versions ont des configurations différentes que vous pouvez trouver en exécutant votre code avec -X
après la commande générale mvn. Comme
mvn clean install -X
mvn compiler:compile -X
et effectuez une recherche avec un identifiant, un objectif ou un nom de plugin. Cela peut également être utile avec d'autres plugins. Eclipse, intelliJ peut ne pas afficher toutes les configurations comme suggestions.