답변:
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
일식 시장에서 설치 하여 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-compiler-plugin에
또한 resources 태그를 정의하여 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-plugin을 사용하고 src / main / generated를 업데이트하십시오. 그리고 mvn clean compile은 내 ../common/src/main/java 또는 ../common에서 작동하므로 후자를 유지하십시오. 그런 다음 David Phillips가 언급했듯이 IntelliJ IDEA (버전 10.5.2) 수준의 컴파일이 실패했음을 확인합니다. 문제는 IDEA가 프로젝트에 다른 소스 루트를 추가하지 않았다는 것입니다. 수동으로 추가하면 문제가 해결되었습니다. 프로젝트에서 아무것도 편집하는 것은 IDEA의 프로젝트 옵션을 직접 편집하는 것이 아니라 maven에서 가져 오는 것이 좋지 않습니다. 그러나 소스를 자동으로 추가하도록 build-helper-maven-plugin을 직접 지원할 때까지 계속 사용할 수 있습니다.
그런 다음이 작업을 수행하기 위해 다른 해결 방법이 필요했습니다. pom 변경 후 IDEA가 maven 설정을 다시 가져올 때마다 새로 추가 된 소스가 모듈에 유지되었지만 소스 폴더 선택 항목이 손실되고 쓸모가 없었습니다. 따라서 IDEA의 경우 다음을 한 번 설정해야합니다.
이제 해당 폴더를 가져 오기 상태로 유지하는 것이 세상에서 가장 좋은 방법은 아니지만 시도해보십시오.
evokk의 대답은 기본적으로 정확하지만 테스트 클래스 가 없습니다 . 목표 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>
구성에서을 사용할 수 있습니다 <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는 모든 구성을 제안으로 표시하지 않을 수 있습니다.