Jawaban:
Anda dapat menambahkan direktori sumber baru dengan 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
elemen dalam /project/build/plugins
dan BUKAN dalam/project/build/pluginManagement/plugins
m2e connector for build-helper-maven-plugin
dari eclipse marketplace untuk menghapus kesalahan di pom.xml
'build.plugins.plugin.version' for org.codehaus.mojo:build-helper-maven-plugin is missing
Anda perlu menambahkan di <plugin>
dalam tag<version>1.12</version>
Dengan naif saya melakukannya dengan cara ini:
<build>
<finalName>osmwse</finalName>
<sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory>
</build>
Ini berhasil untuk saya
<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
- dan mungkin tambahan sources
- sebagai akar dari file sumber. Dalam solusi Anda, maven-compiler-plugin
ini adalah satu-satunya plugin yang mengetahui akar sebenarnya ini.
untuk membuatnya bekerja di intelliJ, Anda juga bisa menambahkan
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
untuk maven-compiler-plugin
Ini juga berfungsi dengan pakar dengan mendefinisikan tag sumber daya. Anda dapat memberi nama nama folder src Anda apa pun yang Anda suka.
<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
Ini berfungsi dengan maven 3.5.4 dan sekarang Intellij Idea melihat kode ini sebagai sumber:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
</configuration>
</plugin>
Menggunakan build-helper-maven-plugin dari postingan - dan memperbarui src / main / dihasilkan. Dan mvn kompilasi bersih berfungsi pada ../common/src/main/java saya, atau pada ../common, jadi simpan yang terakhir. Maka ya, mengonfirmasi bahwa tingkat kompilasi IntelliJ IDEA (ver 10.5.2) gagal seperti yang disebutkan oleh David Phillips. Masalahnya adalah bahwa IDEA tidak menambahkan root sumber lain ke proyek. Menambahkannya secara manual memecahkan masalah. Ini tidak baik karena mengedit apa pun dalam proyek harus berasal dari pakar dan bukan dari pengeditan langsung opsi proyek IDEA. Namun saya akan dapat hidup dengannya sampai mereka mendukung build-helper-maven-plugin secara langsung sehingga akan secara otomatis menambahkan sumber.
Kemudian perlu solusi lain untuk membuat pekerjaan ini. Karena setiap kali IDEA mengimpor ulang pengaturan pakar setelah pom mengubah saya, sumber yang baru ditambahkan disimpan dalam modul, namun kehilangan pilihan Sumber Folder itu dan tidak berguna. Jadi untuk IDEA - perlu mengatur ini sekali:
Sekarang menjaga folder tersebut pada impor juga bukan praktik terbaik di dunia, ..., tetapi cobalah.
Meskipun jawaban dari evokk pada dasarnya benar, namun tidak ada kelas tes . Anda harus menambahkan kelas tes dengan sumber add-test-tujuan :
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated/some-test-classes</source>
</sources>
</configuration>
</execution>
Ini dapat dilakukan dalam dua langkah:
${build.directory}
Jika Anda bekerja dengan memulai Jetty ( jetty:run
), maka kompilasi ulang setiap kelas dalam modul apa pun (dengan Maven, IDEA atau Eclipse) akan mengarah ke restart Jetty. Perilaku yang sama Anda akan dapatkan untuk sumber daya yang dimodifikasi.
Dalam konfigurasi, Anda dapat menggunakan <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>
ini semua konfigurasi yang tersedia untuk versi 3.8.1 dari plugin kompiler. Versi berbeda memiliki konfigurasi berbeda yang dapat Anda temukan dengan menjalankan kode Anda -X
setelah perintah mvn umum. Suka
mvn clean install -X
mvn compiler:compile -X
dan cari dengan id atau tujuan atau nama plugin Ini juga dapat membantu dengan plugin lain. Eclipse, intelliJ mungkin tidak menampilkan semua konfigurasi sebagai saran.