前提
先了解插件
需求
- maven默認(rèn)的項(xiàng)目主代碼放在src/main/java目錄下,執(zhí)行compile階段時,會把該目錄下java文件編譯成class輸出到target目錄下,但是,你項(xiàng)目中依賴其它源碼(直接拷貝代碼過來,而不是以jar的方式依賴),這個時候,為了區(qū)別你自己項(xiàng)目的源碼,你希望把該源碼也放在main目錄下和java同級。如下圖:你想讓fbthrift、generated目錄也設(shè)置成主代碼,這樣compile編譯時就會考慮其中。
ru
解決
- 找插件一個一個看,或者百度,發(fā)現(xiàn)org.codehaus.mojo的build-helper-maven-plugin插件下有個目標(biāo)add-source能干這個事情。
- 目前默認(rèn)綁定到的構(gòu)建階段為:generate-sources, 為了讓測試代碼編譯的時候也能用上fbthrift,generated目錄中的代碼,所以在add-test-source構(gòu)建階段也要添加這些源碼主目錄。
- 插件版本3.0之和只支持maven3
- 這個目標(biāo)有個sources參數(shù)用來配置額外的主代碼(源碼)目錄,而且該參數(shù)是個數(shù)組類型,即可以接收多個目錄。
依次類推,該插件還提供了其它目錄,用來設(shè)置額外的目錄(源碼,資源等)
配置
<build>
<plugins>
<plugin>
<!--插件坐標(biāo)信息-->
<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>