Как добавить дополнительный исходный каталог для Maven для компиляции и включения в банку сборки?


в дополнение к src/main/java я добавляю каталог src/bootstrap, который я хочу включить в свой процесс сборки, другими словами, Я хочу, чтобы maven компилировал и включал источники там в моей сборке. Как же так!?

5 76

5 ответов:

можно использовать Build Helper Plugin, электронной.г:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>some directory</source>
                ...
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
Примечание: это решение просто переместит исходные файлы java в каталог target / classes и не будет компилировать источники.

обновить pom.xml а -

<project>   
 ....
    <build>
      <resources>
        <resource>
          <directory>src/main/config</directory>
        </resource>
      </resources>
     ...
    </build>
...
</project>

вы можете добавить каталоги для вашего процесса сборки, например:

    ...
   <resources>
     <resource>
       <directory>src/bootstrap</directory>
     </resource>
   </resources>
   ...

src / main / java-это путь по умолчанию, который не нужно упоминать в pom.xml

С последними версиями Maven (3) и последней версией плагина компилятора maven (3.7.0), я замечаю, что добавление исходной папки с build-helper-maven-plugin не требуется, если папка, содержащая исходный код для добавления в сборку, находится в target папка или подпапка его.
Похоже, что плагин компилятора maven компилирует любой исходный код java, расположенный внутри этой папки, независимо от каталога, который их содержит.
Например, имея некоторый (сгенерированный или нет) исходный код в target/a,target/generated-source/foo будет скомпилирован и добавлен в outputDirectory:target/classes.