Yanıtlar:
Build-helper ile yeni bir kaynak dizin ekleyebilirsiniz:
<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
öğe /project/build/plugins
/project/build/pluginManagement/plugins
m2e connector for build-helper-maven-plugin
pom.xml'deki hatayı kaldırmak için tutulma pazarından yüklemek isteyebilirsiniz
'build.plugins.plugin.version' for org.codehaus.mojo:build-helper-maven-plugin is missing
<plugin>
<version>1.12</version>
Saf bir şekilde bu şekilde yaparım:
<build>
<finalName>osmwse</finalName>
<sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory>
</build>
Bu benim için çalıştı
<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
- ve muhtemelen ek sources
- varsayıyor . Çözümünüzde, maven-compiler-plugin
bu gerçek köklerin farkında olan tek eklentidir.
intelliJ'de çalışmasını sağlamak için
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
maven-derleyici-eklentisine
Bu aynı zamanda kaynak etiketini tanımlayarak maven ile de çalışır. Src klasör adlarınızı istediğiniz gibi adlandırabilirsiniz.
<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
Bu maven 3.5.4 ile çalıştı ve şimdi Intellij Idea bu kodu kaynak olarak görüyor:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>
</configuration>
</plugin>
Postadan build-helper-maven-eklentisini kullandık ve src / main / Ve mvn temiz derleme benim ../common/src/main/java, ya da ../common üzerinde çalışır, böylece ikincisi tuttu. Sonra evet, derlemenin IntelliJ IDEA (sürüm 10.5.2) seviyesinin David Phillips'in belirttiği gibi başarısız olduğunu doğrulamak. Sorun, IDEA'nın projeye başka bir kaynak kökü eklememesi idi. Manuel olarak eklemek sorunu çözdü. Projedeki herhangi bir şeyi düzenlemek, IDEA'nın proje seçeneklerinin doğrudan düzenlenmesinden değil, maven'den gelmesi gerektiği için hoş değil. Yine de, kaynakları otomatik olarak ekleyecek şekilde build-helper-maven-plugin'i doğrudan destekleyene kadar onunla yaşayabileceğim.
Sonra da bu işi yapmak için başka bir geçici çözüm gerekiyordu. Bir pom değişikliğinden sonra IDEA tekrar maven ayarlarını her içe aktardığından beri, yeni eklenen kaynak modülde tutuldu, ancak Kaynak Klasörleri seçimlerini kaybetti ve işe yaramadı. Yani IDEA için - bunları bir kez ayarlamanız gerekir:
Şimdi bu klasörleri içe aktarmak, dünyanın en iyi uygulaması değil, ..., ama denemek.
Evokk'un cevabı temel olarak doğru olsa da, test sınıfları eksik . Hedef add-test-source ile test sınıfları eklemelisiniz :
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated/some-test-classes</source>
</sources>
</configuration>
</execution>
Bu iki adımda yapılabilir:
${build.directory}
Eğer başlatılan Jetty ( jetty:run
) ile çalışıyorsanız, herhangi bir modülde (Maven, IDEA veya Eclipse ile) herhangi bir sınıfın yeniden derlenmesi Jetty'nin yeniden başlatılmasına neden olur. Değiştirilmiş kaynaklar için alacağınız aynı davranış.
Yapılandırmada kullanabilirsiniz <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>
bunlar derleyici eklentisinin 3.8.1 sürümü için mevcut tüm yapılandırmalardır. Farklı sürümler, kodunuzu -X
genel mvn komutundan sonra çalıştırarak bulabileceğiniz farklı yapılandırmalara sahiptir . Sevmek
mvn clean install -X
mvn compiler:compile -X
ve kimlik veya hedef veya eklenti adıyla arama yapma Bu, diğer eklentilere de yardımcı olabilir. Eclipse, intelliJ tüm yapılandırmaları öneri olarak göstermeyebilir.