天天看点

一个Maven工程中,不同的模块需要不同的JDK进行编译的解决方案

本人在构建数据库分区,分表的时候,由于jdbc3(jdk1.5中实现)和jdbc4(jdk1.6后实现)两个规范上存在相当大的差异,导致无论采用哪个jdk进行编译,都会导致整个pom树无法正确构建,总有一个要出问题。

说实际的这个问题卡了比较长的时候,最后还是研究maven编译插件,才真正解决。

解决的办法就是,在主pom中定义下面的编译插件:

<a href="http://my.oschina.net/tinyframework/blog/200408#">?</a>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<code>&lt;</code><code>build</code><code>&gt;</code>

<code>    </code><code>[...]</code>

<code>    </code><code>&lt;</code><code>plugins</code><code>&gt;</code>

<code>      </code><code>&lt;</code><code>plugin</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>groupid</code><code>&gt;org.apache.maven.plugins&lt;/</code><code>groupid</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>artifactid</code><code>&gt;maven-compiler-plugin&lt;/</code><code>artifactid</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>version</code><code>&gt;3.1&lt;/</code><code>version</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>configuration</code><code>&gt;</code>

<code>          </code><code>&lt;</code><code>verbose</code><code>&gt;true&lt;/</code><code>verbose</code><code>&gt;</code>

<code>          </code><code>&lt;</code><code>fork</code><code>&gt;true&lt;/</code><code>fork</code><code>&gt;</code>

<code>          </code><code>&lt;</code><code>executable</code><code>&gt;${jdk1.5javac}&lt;/</code><code>executable</code><code>&gt;</code>

<code>          </code><code>&lt;</code><code>compilerversion</code><code>&gt;1.5&lt;/</code><code>compilerversion</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>configuration</code><code>&gt;</code>

<code>      </code><code>&lt;/</code><code>plugin</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>plugins</code><code>&gt;</code>

<code>  </code><code>&lt;/</code><code>build</code><code>&gt;</code>

在dbclusterjdbc4中添加下面的编译插件:

<code>          </code><code>&lt;</code><code>executable</code><code>&gt;${jdk1.6javac}&lt;/</code><code>executable</code><code>&gt;</code>

<code>          </code><code>&lt;</code><code>compilerversion</code><code>&gt;1.6&lt;/</code><code>compilerversion</code><code>&gt;</code>

然后在settings.xml中定义jdk1.5javac 和jdk1.6javac变量,指向两个jdk的javac文件即可。