ふと思い立ち、Jenkins 本体をビルドしたくなった。でも、オフィシャルのドキュメントや BUILDING.TXT の内容にしたがおうとしても org.apache.maven.plugins.enforcer.EnforceBytecodeVersion failed というエラーで先に進めなかった。
環境
$ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
$ mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T01:41:47+09:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.12.5", arch: "x86_64", family: "mac"
Java も Maven もバージョンの requirements はクリアしているはずだが...。
雑なトラブルシュート
Maven についての理解があやふやな私は、単に EnforceBytecodeVersion についての記述を削除して、ビルドをすることにした。
$ git diff
diff --git a/pom.xml b/pom.xml
index 7521f0cd0a..8ab985657f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -674,12 +674,6 @@ THE SOFTWARE.
<requireMavenVersion>
<version>3.0</version>
</requireMavenVersion>
- <enforceBytecodeVersion>
- <maxJdkVersion>1.${java.level}</maxJdkVersion>
- <ignoreClasses>
- <ignoreClass>org.eclipse.jetty.spdy.*</ignoreClass>
- </ignoreClasses>
- </enforceBytecodeVersion>
</rules>
</configuration>
</execution>
$ mvn clean install -pl war -am -DskipTests
これで war/target/jenkins.war が作れたので、まあよしとしたけど、明らかに正しい方法ではないよなあ。