Відповіді:
Ви можете додати новий каталог джерел за допомогою 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
елемент є, /project/build/plugins
а НЕ в/project/build/pluginManagement/plugins
m2e connector for build-helper-maven-plugin
з eclipse marketplace, щоб усунути помилку в pom.xml
'build.plugins.plugin.version' for org.codehaus.mojo:build-helper-maven-plugin is missing
вам потрібно додати <plugin>
тег<version>1.12</version>
Я наївно роблю це так:
<build>
<finalName>osmwse</finalName>
<sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory>
</build>
Це працювало для мене
<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
- і, можливо, додатковими sources
- як корені вихідних файлів. У вашому рішенні, maven-compiler-plugin
єдиний плагін, обізнаний про ці фактичні корені.
щоб він працював в intelliJ, ви також можете додати
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
в maven-компілятор-плагін
Це також працює з maven, визначаючи тег ресурсів. Ви можете назвати імена папок src, що завгодно.
<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
Це працювало з maven 3.5.4, і тепер Intellij Idea бачить цей код як джерело:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
</configuration>
</plugin>
Використовували модуль build-helper-maven-плагін з поста - і оновлювали src / main / generated. І mvn чистий збірник працює на моєму ../common/src/main/java або на ../common, тому зберігав останнє. Тоді так, підтверджуючи, що рівень компіляції IntelliJ IDEA (версія 10.5.2) не вдався, як згадував Девід Філліпс. Проблема полягала в тому, що IDEA не додала іншого корінця до проекту. Додавши його вручну, вирішили проблему. Це не приємно, оскільки редагування будь-якого проекту повинно виходити з Maven, а не безпосередньо редагувати варіанти проектів IDEA. Але я зможу жити з цим, поки вони не підтримують плагін build-helper-maven-plugin безпосередньо таким чином, що він автоматично додаватиме джерела.
Тоді знадобився ще один спосіб вирішити цю роботу. Оскільки кожен раз, коли IDEA повторно імпортував параметри Maven після зміни пам’яті, щойно додане джерело зберігалось у модулі, проте воно втрачало вибір папок Source Source і було марним. Тож для IDEA - потрібно встановити їх один раз:
Тепер збереження цих папок при імпорті також не є найкращою практикою у світі, ... але спробувати.
Хоча відповідь від evokk в основному правильна, у ньому відсутні тестові класи . Ви повинні додати тестові класи з цільовим джерелом add-test :
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated/some-test-classes</source>
</sources>
</configuration>
</execution>
Це можна зробити в два етапи:
${build.directory}
Якщо ви працюєте з запущеним Jetty ( jetty:run
), то перекомпіляція будь-якого класу в будь-якому модулі (з Maven, IDEA або Eclipse) призведе до перезапуску Jetty. Таку саму поведінку ви отримаєте для модифікованих ресурсів.
У конфігурації ви можете використовувати <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>
це всі конфігурації, доступні для версії плагіна компілятора 3.8.1. Різні версії мають різні конфігурації, які ви можете знайти, запустивши свій код -X
за допомогою загальної команди mvn. Подібно до
mvn clean install -X
mvn compiler:compile -X
і пошук за допомогою id або цілі або імені плагіна Це може допомогти і для інших плагінів. Eclipse, intelliJ може не відображати всі конфігурації як пропозиції.