Antworten:
Sie können mit build-helper ein neues Quellverzeichnis hinzufügen:
<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
Element ist in /project/build/plugins
und NICHT in/project/build/pluginManagement/plugins
m2e connector for build-helper-maven-plugin
vom Eclipse-Marktplatz installieren , um den Fehler in pom.xml zu entfernen
'build.plugins.plugin.version' for org.codehaus.mojo:build-helper-maven-plugin is missing
Sie sie innerhalb <plugin>
des Tags hinzufügen müssen<version>1.12</version>
Ich mache es naiv so:
<build>
<finalName>osmwse</finalName>
<sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory>
</build>
Das hat bei mir funktioniert
<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
- und möglicherweise zusätzliche sources
- als Wurzeln von Quelldateien annehmen . In Ihrer Lösung ist das maven-compiler-plugin
das einzige Plugin , das diese tatsächlichen Wurzeln kennt.
Damit es in IntelliJ funktioniert, können Sie auch hinzufügen
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
zum Maven-Compiler-Plugin
Dies funktioniert auch mit maven, indem das Ressourcen-Tag definiert wird. Sie können Ihre src-Ordnernamen beliebig benennen.
<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
Dies funktionierte mit Maven 3.5.4 und jetzt sieht Intellij Idea diesen Code als Quelle:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
</configuration>
</plugin>
Verwendete das Build-Helper-Maven-Plugin aus dem Post - und aktualisiere src / main / generate. Und mvn clean compile funktioniert auf meinem ../common/src/main/java oder auf ../common, also behalte letzteres bei. Dann ja, um zu bestätigen, dass die IntelliJ IDEA (Version 10.5.2) -Ebene der Kompilierung fehlgeschlagen ist, wie David Phillips erwähnt hat. Das Problem war, dass IDEA dem Projekt keinen weiteren Quellstamm hinzufügte. Durch manuelles Hinzufügen wurde das Problem behoben. Es ist nicht schön, da die Bearbeitung von Elementen im Projekt von Maven stammen sollte und nicht von der direkten Bearbeitung der IDEA-Projektoptionen. Ich werde jedoch in der Lage sein, damit zu leben, bis sie das Build-Helper-Maven-Plugin direkt unterstützen, sodass die Quellen automatisch hinzugefügt werden.
Dann brauchte ich eine weitere Problemumgehung, damit dies funktioniert. Da jedes Mal, wenn IDEA die Maven-Einstellungen nach einem POM-Wechsel erneut importierte, die neu hinzugefügte Quelle im Modul beibehalten wurde, verlor sie die Auswahl der Quellordner und war nutzlos. Also für IDEA - müssen diese einmal einstellen:
Jetzt ist es auch nicht die beste Vorgehensweise der Welt, diese Ordner beim Import zu behalten, ... aber es auszuprobieren.
Während die Antwort von evokk grundsätzlich richtig ist, es fehlt Testklassen . Sie müssen Testklassen mit dem Ziel add-test-source hinzufügen :
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated/some-test-classes</source>
</sources>
</configuration>
</execution>
Dies kann in zwei Schritten erfolgen:
${build.directory}
Wenn Sie mit gestartetem Jetty ( jetty:run
) arbeiten, führt die Neukompilierung einer Klasse in einem beliebigen Modul (mit Maven, IDEA oder Eclipse) zum Neustart von Jetty. Das gleiche Verhalten erhalten Sie für geänderte Ressourcen.
In der Konfiguration können Sie verwenden <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>
Dies sind alle Konfigurationen, die für die Version 3.8.1 des Compiler-Plugins verfügbar sind. Verschiedene Versionen haben unterschiedliche Konfigurationen, die Sie finden können, indem Sie Ihren Code -X
nach dem allgemeinen Befehl mvn ausführen . Mögen
mvn clean install -X
mvn compiler:compile -X
und Suche mit ID oder Ziel oder Plugin-Name Dies kann auch bei anderen Plugins hilfreich sein. Eclipse, IntelliJ zeigt möglicherweise nicht alle Konfigurationen als Vorschläge an.