Jenkinsプラグイン開発 環境構築に関するメモ(on Windows7:Eclipse対応)
下記エントリの続き。書籍やWeb等を参考に、Eclipse上でデバッグ可能な状態に持って行くまでをメモ。
C:\work_jenkinsplugin\sample>mvn -DdownloadSources=true -DdownloadJavadocs=true -DoutputDirectory=target/eclipse-classes eclipse:eclipse : : [INFO] Wrote Eclipse project for "sample" to C:\work_jenkinsplugin\sample. [INFO] Sources for some artifacts are not available. List of artifacts without a source archive: o xalan:serializer:2.7.1 o xerces:xercesImpl:2.9.1 o jaxen:jaxen:1.1-beta-11 o commons-jelly:commons-jelly-tags-xml:1.1 o org.jvnet.hudson:commons-jelly-tags-define:1.0.1-hudson-20071021 o org.springframework:spring-jdbc:1.2.9 o org.springframework:spring-dao:1.2.9 o org.apache.ant:ant-launcher:1.7.1 o javax.servlet:jstl:1.1.0 o avalon-framework:avalon-framework:4.1.3 o stax:stax-api:1.0.1 o asm:asm-commons:2.2.3 o asm:asm-tree:2.2.3 o asm:asm:2.2.3 o org.jenkins-ci.main:jenkins-war:1.424 o com.jcraft:jsch:0.1.38 o org.jenkins-ci.main:jenkins-war:1.424 Javadoc for some artifacts is not available. List of artifacts without a javadoc archive: o javax.servlet:servlet-api:2.4 o org.jvnet.hudson:trilead-ssh2:build212-hudson-5 o org.jvnet.hudson:jtidy:4aug2000r7-dev-hudson-1 o org.jruby.ext.posix:jna-posix:1.0.3 o commons-discovery:commons-discovery:0.4 o commons-logging:commons-logging:1.1 o commons-collections:commons-collections:3.2 o org.jvnet.hudson:commons-jexl:1.1-hudson-20090508 o org.jvnet.hudson.dom4j:dom4j:1.6.1-hudson-3 o org.kohsuke.stapler:stapler-adjunct-codemirror:1.1 o org.jenkins-ci:htmlunit:2.6-jenkins-4 o xalan:xalan:2.7.1 o xalan:serializer:2.7.1 o commons-httpclient:commons-httpclient:3.1 o org.jvnet.hudson:htmlunit-core-js:2.6-hudson-1 o xerces:xercesImpl:2.9.1 o net.sourceforge.cssparser:cssparser:0.9.5 o org.w3c.css:sac:1.3 o antlr:antlr:2.7.6 o org.jvnet.hudson:xstream:1.3.1-hudson-8 o org.apache.ant:ant:1.8.0 o javax.mail:mail:1.4 o jaxen:jaxen:1.1-beta-11 o commons-jelly:commons-jelly-tags-fmt:1.0 o commons-jelly:commons-jelly-tags-xml:1.1 o org.jvnet.hudson:commons-jelly-tags-define:1.0.1-hudson-20071021 o org.acegisecurity:acegi-security:1.0.5 o org.springframework:spring-core:2.5 o org.springframework:spring-jdbc:1.2.9 o org.springframework:spring-beans:2.5 o org.springframework:spring-dao:1.2.9 o org.springframework:spring-context:2.5 o oro:oro:2.0.8 o log4j:log4j:1.2.9 o org.apache.ant:ant-launcher:1.7.1 o jline:jline:0.9.94 o org.springframework:spring-web:2.5 o aopalliance:aopalliance:1.0 o org.springframework:spring-aop:2.5 o javax.servlet:jstl:1.1.0 o logkit:logkit:1.0.1 o avalon-framework:avalon-framework:4.1.3 o com.sun.xml.txw2:txw2:20070624 o net.java.dev.jna:jna:3.3.0-jenkins-2 o org.codehaus.woodstox:wstx-asl:3.2.7 o stax:stax-api:1.0.1 o org.jenkins-ci:jmdns:3.4.0-jenkins-2 o org.kohsuke.jinterop:j-interop:2.0.6-kohsuke-1 o org.kohsuke.jinterop:j-interopdeps:2.0.6-kohsuke-1 o asm:asm-commons:2.2.3 o asm:asm-tree:2.2.3 o asm:asm:2.2.3 o org.jenkins-ci.main:jenkins-war:1.424 o com.jcraft:jsch:0.1.38 o org.apache.jackrabbit:jackrabbit-webdav:1.5.0 o org.apache.jackrabbit:jackrabbit-jcr-commons:1.5.0 o org.slf4j:slf4j-api:1.5.3 o org.slf4j:slf4j-nop:1.5.3 o org.jenkins-ci.svnkit:svnkit:1.3.4-jenkins-4 o org.jvnet.hudson:netx:0.5-hudson-2 o org.jenkins-ci.main:jenkins-war:1.424 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 21 minutes 37 seconds [INFO] Finished at: Tue May 01 07:23:06 JST 2012 [INFO] Final Memory: 54M/194M [INFO] ------------------------------------------------------------------------ C:\work_jenkinsplugin\sample>
- 成果物を確認。
C:\work_jenkinsplugin\sample>dir ドライブ C のボリューム ラベルは ローカル ディスク です ボリューム シリアル番号は 8609-AF4E です C:\work_jenkinsplugin\sample のディレクトリ 2012/05/01 07:23 <DIR> . 2012/05/01 07:23 <DIR> .. 2012/05/01 07:23 56,511 .classpath 2012/05/01 07:23 415 .project 2012/05/01 07:23 <DIR> .settings 2012/05/01 01:53 1,022 pom.xml 2012/05/01 01:53 <DIR> src 2012/05/01 07:23 <DIR> target 3 個のファイル 57,948 バイト 5 個のディレクトリ 153,141,886,976 バイトの空き領域 C:\work_jenkinsplugin\sample>
- Eclipseを起動、プロジェクトを取り込む。
- 取り込んだ。この時点ではエラーが出ている。環境変数"M2_REPO"が解決出来ていない模様。
- [ウインドウ][設定][Java][ビルドパス][クラスパス変数]で新たに"M2_REPO"を作成。ここまでの手順で行くと『C:\Users\(ユーザ名)\.m2\repository』となるのでその値を設定。ビルドエラーを解決。
デバッグ設定
- 環境変数を追加。
MAVEN_OPTS | -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n |
MAVEN_OPTS の役割はデバッガポート8000ですべてを起動するためのものです。 こうすればIDEからこのポートへデバッグセッションを開始することができます。
C:\>echo %MAVEN_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n
- [リモートアプリケーション]の構成で新規作成を行う。ポート番号を起動時の内容と同期。(ポート番号:上記MAVEN_OPTSで設定したaddress=の値と同じ値を設定。この手順の場合は8000で待ち受ける形となる)(※ここでは設定の保存のみ。デバッグはまだ実行せず)
- Mavenで操作したフォルダに移動し、Maven経由でプラグインを起動。(※特に指定のない場合、ポート番号:8080で起動される。任意のポートでJenkinsを起動する場合は『mvn hpi:run -Djetty.port=(ポート番号)』の形式で実行)
C:\>cd work_jenkinsplugin C:\work_jenkinsplugin>cd sample C:\work_jenkinsplugin\sample>mvn hpi:run Listening for transport dt_socket at address: 8080 [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building Unnamed - org.example:sample:hpi:1.0-SNAPSHOT [INFO] task-segment: [hpi:run] [INFO] ------------------------------------------------------------------------ [INFO] Preparing hpi:run [INFO] [hpi:validate {execution: default-validate}] [INFO] [enforcer:display-info {execution: default}] [INFO] Maven Version: 2.2.1 [INFO] JDK Version: 1.7.0_03 normalized as: 1.7.0-3 [INFO] OS Info: Arch: amd64 Family: windows Name: windows 7 Version: 6.1 : :
- 上記で設定した[リモートアプリケーション]の構成をデバッグ実行。リモートアプリケーションとして立ち上がる。
- ブラウザ経由(上記設定の場合だと http://localhost:8080/ )でアクセス。Eclipseの方でデバッグポイントを設定している場合だと、上手いこと止まってくれると思います。