gpt4 book ai didi

java - Maven 多源目录模块不工作

转载 作者:行者123 更新时间:2023-11-30 10:56:02 25 4
gpt4 key购买 nike

我有一个多模块项目,其中一些模块有多个源目录(一个用于手工创建的代码,一个用于生成的代码)。

项目看起来像:

Product
+-- pom.xml
+-- MagniCompCommon
+-- src/main/java
+-- src-gen
+-- pom.xml

我正在使用 build-helper-maven-plugin 添加 src-gen 目录。但是,当我在 Parent maven 中通过“mvn clean install”编译时,它不会编译 src-gen 中的任何内容,也不会在它尝试编译 src/main/java 文件时将其包含在类路径中。由于 src/main/java 中的许多 java 代码引用src-gen代码,编译失败。

这是父 pom.xml:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>

<groupId>com.magnicomp</groupId>
<artifactId>Product</artifactId>
<version>1.0</version>
<packaging>pom</packaging>


<modules>
<module>MagniCompCommon</module>
<module>Model</module>
<module>Common</module>
<!-- <module>Agent</module> -->
<!-- <module>Doc</module> -->
</modules>

<properties>
<!-- MagniComp common -->
<failOnMissingWebXml>false</failOnMissingWebXml>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hibernate.version>4.3.11.Final</hibernate.version> <!-- was 4.3.10.Final -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<!-- Product specific -->
<!-- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> -->
<jersey.glassfish.version>2.21</jersey.glassfish.version>
<javax.servlet.version>3.0</javax.servlet.version>
<bouncy.version>1.51</bouncy.version>
</properties>

<build>
<pluginManagement>
<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>src-gen</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- Use Java 8 (default is 5) -->
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>

我也尝试过使用 ${project.basedir}/src-gen对于 <source>但这没有什么区别。

这是 MagniCompCommon pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>com.magnicomp</groupId>
<artifactId>Product</artifactId>
<version>1.0</version>
</parent>

<artifactId>MagniCompCommon</artifactId>
<packaging>jar</packaging>
.... snip ...

最佳答案

移至 child :

   <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>src-gen</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
  • 为什么使用 pluginManagement => 只是共享同一个插件的一种方式。
  • maven-compiler-plugin 你可以把它放在 pluginManagement 中而不是其他插件。

关于java - Maven 多源目录模块不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33135285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com