【发布时间】:2016-01-13 03:06:01
【问题描述】:
我有一个多模块项目,其中一些模块有多个源目录(一个用于手工创建的代码,一个用于生成的代码)。
项目如下:
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 ...
【问题讨论】:
-
src-gen中的那些东西是通过哪些工具生成的? (XSD/REST/WSDL?)