Risposte:
È possibile aggiungere una nuova directory di origine 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
element is in /project/build/plugins
e NOT in/project/build/pluginManagement/plugins
m2e connector for build-helper-maven-plugin
dal marketplace di eclipse per rimuovere l'errore in pom.xml
'build.plugins.plugin.version' for org.codehaus.mojo:build-helper-maven-plugin is missing
devi aggiungere all'interno <plugin>
del tag<version>1.12</version>
Lo faccio ingenuamente in questo modo:
<build>
<finalName>osmwse</finalName>
<sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory>
</build>
Questo ha funzionato per me
<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
- e possibilmente ulteriori sources
- come le radici dei file di origine. Nella tua soluzione, maven-compiler-plugin
è l'unico plugin a conoscenza di queste radici reali.
per farlo funzionare in IntelliJ, puoi anche aggiungere
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
a maven-compilatore-plugin
Questo funziona anche con Mavven definendo il tag delle risorse. Puoi nominare i nomi delle tue cartelle src come preferisci.
<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
Questo ha funzionato con Maven 3.5.4 e ora Intellij Idea vede questo codice come fonte:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
</configuration>
</plugin>
Ho usato il plug-in build-helper-maven dal post - e aggiorna src / main / generate. E mvn clean compile funziona sul mio ../common/src/main/java, o su ../common, quindi ho mantenuto quest'ultimo. Quindi sì, confermando che il livello della compilation di IntelliJ IDEA (versione 10.5.2) è fallito, come menzionato da David Phillips. Il problema era che IDEA non ha aggiunto un'altra radice di origine al progetto. L'aggiunta manualmente ha risolto il problema. Non è bello in quanto la modifica di qualcosa nel progetto dovrebbe provenire da Maven e non dalla modifica diretta delle opzioni del progetto IDEA. Tuttavia sarò in grado di convivere con esso fino a quando non supportano direttamente build-helper-maven-plugin in modo tale da aggiungere automaticamente le fonti.
Quindi aveva bisogno di un'altra soluzione alternativa per farlo funzionare però. Dal momento che ogni volta che IDEA ha reimportato le impostazioni di Maven dopo un cambio di pom, il nuovo sorgente aggiunto è stato mantenuto sul modulo, eppure ha perso le selezioni delle cartelle di origine ed è stato inutile. Quindi per IDEA - è necessario impostare questi una volta:
Ora mantenere quelle cartelle all'importazione non è la migliore pratica al mondo, ..., ma provarlo.
Sebbene la risposta di evokk sia sostanzialmente corretta, mancano le classi di test . Devi aggiungere classi di test con obiettivo 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>
Questo può essere fatto in due passaggi:
${build.directory}
Se lavori con Jetty avviato ( jetty:run
), la ricompilazione di qualsiasi classe in qualsiasi modulo (con Maven, IDEA o Eclipse) porterà al riavvio di Jetty. Lo stesso comportamento che otterrai per le risorse modificate.
Nella configurazione, è possibile utilizzare <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>
queste sono tutte le configurazioni disponibili per la versione 3.8.1 del plug-in del compilatore. Versioni diverse hanno configurazioni diverse che puoi trovare eseguendo il codice -X
dopo il comando generale mvn. Piace
mvn clean install -X
mvn compiler:compile -X
e cerca con ID o obiettivo o nome del plug-in Questo può aiutare anche con altri plug-in. Eclipse, intelliJ potrebbe non mostrare tutte le configurazioni come suggerimenti.