มีวิธีการรวบรวมหลายแหล่งไดเรกทอรี java ในโครงการ maven เดียวหรือไม่
มีวิธีการรวบรวมหลายแหล่งไดเรกทอรี java ในโครงการ maven เดียวหรือไม่
คำตอบ:
คุณสามารถเพิ่มไดเรกทอรีแหล่งใหม่ด้วย 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
จาก eclipsearket เพื่อลบข้อผิดพลาดใน 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
สิ่งนี้ยังทำงานกับ 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 / created และคอมไพล์ mvn ที่สะอาดนั้นใช้กับ .. /common/src/main/java หรือ .. /common ถ้าใช่ยืนยันว่า IntelliJ IDEA (เวอร์ชั่น 10.5.2) ระดับการรวบรวมล้มเหลวตามที่ David Phillips พูดถึง ปัญหาคือ IDEA ไม่ได้เพิ่มรูทต้นฉบับอื่นให้กับโครงการ การเพิ่มมันแก้ไขปัญหาด้วยตนเอง มันไม่ดีเลยที่การแก้ไขอะไรในโครงการควรมาจาก maven และไม่ใช่จากการแก้ไขตัวเลือกโครงการของ IDEA โดยตรง แต่ฉันจะสามารถใช้ชีวิตกับมันจนกว่าพวกเขาจะสนับสนุน build-helper-maven-plugin โดยตรงเพื่อที่มันจะเพิ่มแหล่งข้อมูลอัตโนมัติ
จากนั้นต้องการวิธีแก้ปัญหาอื่นเพื่อให้สามารถใช้งานได้ เนื่องจากทุกครั้งที่ IDEA นำเข้าการตั้งค่า maven ใหม่หลังจาก pom เปลี่ยนฉันแหล่งที่เพิ่มใหม่ถูกเก็บไว้ในโมดูล แต่มันหายไปมันเป็นการเลือกโฟลเดอร์ต้นทางและไม่มีประโยชน์ ดังนั้นสำหรับ 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>
สามารถทำได้สองขั้นตอน:
${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 อาจไม่แสดงการกำหนดค่าทั้งหมดเป็นคำแนะนำ