Câu trả lời:
Bạn có thể thêm một thư mục nguồn mới với trình trợ giúp xây dựng:
<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
yếu tố nằm trong /project/build/plugins
và KHÔNG ở/project/build/pluginManagement/plugins
m2e connector for build-helper-maven-plugin
từ thị trường nhật thực để xóa lỗi trong pom.xml
'build.plugins.plugin.version' for org.codehaus.mojo:build-helper-maven-plugin is missing
bạn cần thêm vào trong <plugin>
thẻ<version>1.12</version>
Tôi ngây thơ làm theo cách này:
<build>
<finalName>osmwse</finalName>
<sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory>
</build>
Điều này làm việc cho tôi
<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
- và có thể bổ sung sources
- là gốc của các tệp nguồn. Trong giải pháp của bạn, maven-compiler-plugin
plugin là nhận thức duy nhất về những gốc thực tế này.
để làm cho nó hoạt động trong intelliJ, bạn cũng có thể thêm
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
để maven-biên dịch-plugin
Điều này cũng hoạt động với maven bằng cách xác định thẻ tài nguyên. Bạn có thể đặt tên tên thư mục src của bạn bất cứ điều gì bạn thích.
<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
Điều này đã làm việc với maven 3.5.4 và bây giờ Intellij Idea xem mã này là nguồn:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
</configuration>
</plugin>
Đã sử dụng plugin-helper-maven-plugin từ bài đăng - và cập nhật src / main / created. Và mvn biên dịch sạch hoạt động trên ../common/src/main/java hoặc trên ../common, vì vậy hãy giữ lại sau. Sau đó, có, xác nhận rằng mức độ biên dịch IntelliJ IDEA (phiên bản 10.5.2) đã thất bại như David Phillips đã đề cập. Vấn đề là IDEA đã không thêm một nguồn gốc khác vào dự án. Thêm nó bằng tay giải quyết vấn đề. Thật không hay khi chỉnh sửa bất cứ điều gì trong dự án nên đến từ maven chứ không phải từ chỉnh sửa trực tiếp các tùy chọn dự án của IDEA. Tuy nhiên, tôi sẽ có thể sống với nó cho đến khi họ hỗ trợ plugin-helper-maven-plugin trực tiếp để nó tự động thêm các nguồn.
Sau đó, cần một cách giải quyết khác để làm cho công việc này mặc dù. Vì mỗi lần IDEA nhập lại các cài đặt maven sau khi thay đổi pom, nguồn mới được thêm của tôi được giữ lại trên mô-đun, nhưng nó bị mất các lựa chọn Thư mục nguồn và vô dụng. Vì vậy, đối với IDEA - cần thiết lập những thứ này một lần:
Bây giờ, việc giữ các thư mục đó khi nhập cũng không phải là cách tốt nhất trên thế giới, ..., nhưng hãy thử xem.
Mặc dù câu trả lời từ evokk về cơ bản là chính xác, nhưng nó lại thiếu các lớp kiểm tra . Bạn phải thêm các lớp kiểm tra với mục tiêu thêm nguồn kiểm tra :
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated/some-test-classes</source>
</sources>
</configuration>
</execution>
Điều này có thể được thực hiện trong hai bước:
${build.directory}
Nếu bạn làm việc với Jetty ( jetty:run
) đã bắt đầu , thì việc biên dịch lại bất kỳ lớp nào trong bất kỳ mô-đun nào (với Maven, IDEA hoặc Eclipse) sẽ dẫn đến khởi động lại của Jetty. Hành vi tương tự bạn sẽ nhận được đối với tài nguyên đã sửa đổi.
Trong cấu hình, bạn có thể sử dụng <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>
đây là tất cả các cấu hình có sẵn cho phiên bản 3.8.1 của trình biên dịch plugin. Các phiên bản khác nhau có các cấu hình khác nhau mà bạn có thể tìm thấy bằng cách chạy mã của mình -X
sau lệnh mvn chung. Giống
mvn clean install -X
mvn compiler:compile -X
và tìm kiếm với id hoặc mục tiêu hoặc tên plugin Điều này cũng có thể giúp với các plugin khác. Eclipse, intelliJ có thể không hiển thị tất cả các cấu hình dưới dạng các đề xuất.