Ivyでサンプルを使用してファイルシステムリゾルバーを使用する方法を誰かが説明してくれます..
すべての依存関係を定義したivy.xmlファイルがありますが、mavenリポジトリからではなく、ファイルシステムからのjarが必要です..?
ivysettings.xml ファイルはどこに置きますか。
ivysettings.xml を使用するために build.xml に含まれるもの
Ivyでサンプルを使用してファイルシステムリゾルバーを使用する方法を誰かが説明してくれます..
すべての依存関係を定義したivy.xmlファイルがありますが、mavenリポジトリからではなく、ファイルシステムからのjarが必要です..?
ivysettings.xml ファイルはどこに置きますか。
ivysettings.xml を使用するために build.xml に含まれるもの
ivysettings.xmlファイルは、デフォルトでivy.xmlファイルと同じディレクトリにあります。
libディレクトリにあるサードパーティの依存関係。
$ tree
.
|-- build.xml
|-- ivysettings.xml
|-- ivy.xml
|-- lib
| |-- junit-4.10.jar
| |-- slf4j-api-1.6.4.jar
| `-- slf4j-simple-1.6.4.jar
`-- src
|-- main
| `-- java
| `-- org
| `-- demo
| `-- App.java
`-- test
`-- java
`-- org
`-- demo
`-- AppTest.java
10 directories, 8 files
このアイビー ファイルは、構成を使用して 3 種類の依存関係を管理します。
これらは、ANT ビルドで使用されるクラスパスに対応します。
<ivy-module version="2.0">
<info organisation="com.myspotontheweb" module="demo"/>
<configurations defaultconfmapping="compile->default">
<conf name="compile" description="Required to compile application"/>
<conf name="runtime" description="Additional run-time dependencies" extends="compile"/>
<conf name="test" description="Required for test only" extends="runtime"/>
</configurations>
<dependencies>
<!-- compile dependencies -->
<dependency org="org.slf4j" name="slf4j-api" rev="1.6.4"/>
<!-- runtime dependencies -->
<dependency org="org.slf4j" name="slf4j-simple" rev="1.6.4" conf="runtime->default"/>
<!-- test dependencies -->
<dependency org="junit" name="junit" rev="4.10" conf="test->default"/>
</dependencies>
</ivy-module>
派手なものはありません。libディレクトリにある jar への単純なマッピング:
<ivysettings>
<settings defaultResolver="local"/>
<resolvers>
<filesystem name="local">
<artifact pattern="${ivy.settings.dir}/lib/[artifact]-[revision].[ext]"/>
</filesystem>
</resolvers>
</ivysettings>
または.....次のように、非ローカルjarのMaven中央リポジトリを常に含めます。
<ivysettings>
<settings defaultResolver="central"/>
<resolvers>
<ibiblio name="central" m2compatible="true"/>
<filesystem name="local">
<artifact pattern="${ivy.settings.dir}/lib/[artifact]-[revision].[ext]"/>
</filesystem>
</resolvers>
<modules>
<module organisation="org.slf4j" resolver="local"/>
<module organisation="junit" name="junit" resolver="local"/>
</modules>
</ivysettings>
modulesセクションは、どの jar をローカルで取得する必要があるかを指定します。
最後に、ivy を使用してクラスパスを管理するビルド ロジックです。
<project name="demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">
<!--
================
Build properties
================
-->
<property name="src.dir" location="src/main/java"/>
<property name="test.src.dir" location="src/test/java"/>
<property name="build.dir" location="build"/>
<property name="classes.dir" location="${build.dir}/classes"/>
<property name="test.classes.dir" location="${build.dir}/test-classes"/>
<property name="ivy.reports.dir" location="${build.dir}/ivy-reports"/>
<property name="test.reports.dir" location="${build.dir}/test-reports"/>
<!--
===========
Build setup
===========
-->
<target name="init">
<ivy:resolve/>
<ivy:report todir='${ivy.reports.dir}' graph='false' xml='false'/>
<ivy:cachepath pathid="compile.path" conf="compile"/>
<ivy:cachepath pathid="runtime.path" conf="runtime"/>
<ivy:cachepath pathid="test.path" conf="test"/>
<mkdir dir="${classes.dir}"/>
<mkdir dir="${test.classes.dir}"/>
<mkdir dir="${test.reports.dir}"/>
</target>
<!--
===============
Compile targets
===============
-->
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false" debug="true" classpathref="compile.path"/>
</target>
<target name="compile-tests" depends="compile">
<javac srcdir="${test.src.dir}" destdir="${test.classes.dir}" includeantruntime="false" debug="true">
<classpath>
<path refid="test.path"/>
<pathelement path="${classes.dir}"/>
</classpath>
</javac>
</target>
<!--
============
Test targets
============
-->
<target name="test" depends="compile-tests">
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<path refid="test.path"/>
<pathelement path="${classes.dir}"/>
<pathelement path="${test.classes.dir}"/>
</classpath>
<formatter type="xml"/>
<batchtest fork="yes" todir="${test.reports.dir}">
<fileset dir="${test.src.dir}">
<include name="**/*Test*.java"/>
<exclude name="**/AllTests.java"/>
</fileset>
</batchtest>
</junit>
</target>
<!--
=====================
Build and run targets
=====================
-->
<target name="build" depends="test"/>
<target name="run" depends="build">
<java classname="org.demo.App">
<classpath>
<path refid="runtime.path"/>
<pathelement location="${classes.dir}"/>
</classpath>
</java>
</target>
<!--
=============
Clean targets
=============
-->
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="clean-all" depends="clean">
<ivy:cleancache/>
</target>
</project>