TFSとGradleの連携7:Ivy環境作成2

年明け1発目は、去年書き残したIvyのリポジトリ作成の続きです。

とりあえず、今回の環境構築で使ったリポジトリダウンロード用のbuild.xmlを置いてみます。

<?xml version="1.0"?>
<!–
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.   
–>
<!–
   2014/12/01 Changed by @__Black
     checkstyle, findbugs用のライブラリをリポジトリに追加するだけの処理に変更
–>

<project name="ivyRepositoryInstall" default="add-repos"  xmlns:ivy="antlib:org.apache.ivy.ant">
<property name="repositoryBase" value="c:/ivy-repository"/>

<property name="originalResolver" value="libraries"/>
<property name="installFolder" value="my-repository"/>

<property name="ivy.cache.dir" value="${repositoryBase}/cache" />
<property name="dest.repo.dir" value="${repositoryBase}/myrepository" />

<property name="ivy.jar.dir" value="${repositoryBase}/.ivy2/jars" />
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar" />

<!– =================================
          target: load-ivy         
            this target is not necessary if you put ivy.jar in your ant lib directory
            if you already have ivy 1.4 in your ant lib, you can simply remove this
            target
         ================================= –>
    <target name="load-ivy">
     <path id="ivy.lib.path">
      <pathelement location="${ivy.jar.file}"/>
     </path>
     <taskdef resource="org/apache/ivy/ant/antlib.xml"
               uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
        <ivy:settings id="settingsFile" file="${repositoryBase}/settings/ivysettings-basic.xml"/>
    </target>   

    <target name="add-repos"  depends="load-ivy">
     <ivy:install settingsRef="settingsFile"
      organisation="com.puppycrawl.tools" module="checkstyle" revision="6.1.1"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="junit" module="junit" revision="4.11"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.hamcrest" module="hamcrest-core" revision="1.3"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="jacoco"  revision="0.7.2.201409121644"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="antlr" module="antlr"  revision="2.7.7"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.antlr" module="antlr4-runtime"  revision="4.3"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="commons-beanutils" module="commons-beanutils-core"  revision="1.8.3"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="commons-cli" module="commons-cli"  revision="1.2"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="com.google.guava" module="guava"  revision="18.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.apache.ant" module="ant"  revision="1.7.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.abego.treelayout" module="org.abego.treelayout.core"  revision="1.0.1"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.antlr" module="antlr4-annotations"  revision="4.3"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.agent"  revision="0.7.2.201409121644"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.ant"  revision="0.7.2.201409121644"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.report"  revision="0.7.2.201409121644"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.core"  revision="0.7.2.201409121644"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />

     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.agent"  revision="0.7.1.201405082137"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.ant"  revision="0.7.1.201405082137"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.report"  revision="0.7.1.201405082137"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />

     <ivy:install settingsRef="settingsFile"
      organisation="org.ow2.asm" module="asm-debug-all"  revision="5.0.3"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />

     <ivy:install settingsRef="settingsFile"
      organisation="org.jacoco" module="org.jacoco.core"  revision="0.7.1.201405082137"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />

     <ivy:install settingsRef="settingsFile"
      organisation="com.google.code.findbugs" module="findbugs" revision="3.0.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="com.google.code.findbugs" module="bcel-findbugs" revision="6.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="com.google.code.findbugs" module="annotations" revision="3.0.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="com.google.code.findbugs" module="jFormatString" revision="3.0.0"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="dom4j" module="dom4j" revision="1.6.1"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="jaxen" module="jaxen" revision="1.1.6"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="org.ow2.asm" module="asm-debug-all" revision="5.0.2"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="commons-lang" module="commons-lang" revision="2.6"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
     <ivy:install settingsRef="settingsFile"
      organisation="xml-apis" module="xml-apis" revision="1.0.b2"
      from="${originalResolver}" to="${installFolder}" overwrite="true" />
    </target>
</project>

GitHubにも同じファイルを置いています。

このファイルを保存して、「Ant -f build.xml」のような形で実行すると、インターネットからダウンロードしてくれます。

ちなみに、このbuild.xmlの内容を追加したいときには、「ivy:install」タスクをコピペで追加し、必要なライブラリ情報に書き換えるだけです。
「必要なライブラリ情報」をどう指定するかですが、「The Central Repository」という便利なサイトが存在します。

Snapcrab_20150101_205551_no0000

ダウンロードしたいライブラリの情報を検索します。
試しに、"Cobertura"を検索してみます。

Snapcrab_20150101_210154_no0000

過去バージョン/関連ライブラリを含め、リポジトリに登録されているものが表示されます。
(Gradle非公式ですが、Cobertura用Pluginも格納されています)

過去バージョンを選択したいときには、「Latest Version」にある"all"をクリックすると、バージョン一覧が表示されますので、そこから選択できます。

Snapcrab_20150101_210213_no0000

取得したい「Version」をクリックすると、詳細情報が表示されます。

Snapcrab_20150101_210220_no0000

左側にある「Dependency Information」にある"Apache Ivy"をクリックすると、依存関係の情報が表示されます。この内容を元に
organisation="xml-apis" module="xml-apis" revision="1.0.b2"
 org="~"→organisation="~"
 name="~"→module="~"
 rev="~"→revision="~"
としてivy:installタスクに指定すればOKです。
今回のcoberturaであれば、こうなります。
     <ivy:install settingsRef="settingsFile"
      organisation="cobertura" module="cobertura" revision="1.9rc1
  from="${originalResolver}" to="${installFolder}" overwrite="true" />

ちなみにですが、build.gradleの「repositories」に"mavenCentral()"と記載し、Mavenのセントラルリポジトリを使用する場合は、先ほどの「Dependency Information」にある"Gradle/Grails"をクリックしたところに表示される
 compile ‘cobertura:cobertura:1.9rc1’
を、build.gradleの「dependencies」に追加するだけです。

Gradleを使ってTFSのビルドを実行させるための環境構築について書いてみました。
今回紹介させていただいた「Gradle for TFS Build Automation」は、Java関連での選択肢として以前のBuild Extentionsよりも幅が広がっているのと、GradleがAnt/Mavenのビルドスクリプトをそのまま使用できることもあり、移行もやりやすいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください