前提
先了解插件
需求
- maven默认的项目主代码放在src/main/java目录下,执行compile阶段时,会把该目录下java文件编译成class输出到target目录下,但是,你项目中依赖其它源码(直接拷贝代码过来,而不是以jar的方式依赖),这个时候,为了区别你自己项目的源码,你希望把该源码也放在main目录下和java同级。如下图:你想让fbthrift、generated目录也设置成主代码,这样compile编译时就会考虑其中。
解决
- 找插件一个一个看,或者百度,发现org.codehaus.mojo的build-helper-maven-plugin插件下有个目标add-source能干这个事情。
- 目前默认绑定到的构建阶段为:generate-sources, 为了让测试代码编译的时候也能用上fbthrift,generated目录中的代码,所以在add-test-source构建阶段也要添加这些源码主目录。
- 插件版本3.0之和只支持maven3
- 这个目标有个sources参数用来配置额外的主代码(源码)目录,而且该参数是个数组类型,即可以接收多个目录。
依次类推,该插件还提供了其它目录,用来设置额外的目录(源码,资源等)
配置
<build>
<plugins>
<plugin>
<!--插件坐标信息-->
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/java</source>
<source>src/main/generated</source>
<source>src/main/fbthrift</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/test/java</source>
<source>src/main/java</source>
<source>src/main/generated</source>
<source>src/main/fbthrift</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
网友评论