1

私は、会社の1つの大きなプロジェクトのすべてのサブプロジェクトを、依存関係が管理された多くのjarにコンパイルしようとしています。そのため、1つのプロジェクトで作業するすべての人が、共有リポジトリから最新のjarをダウンロードするだけで済みます。

ivyはant(アウトビルドシステム)と非常によく統合されていると言っているので、ivyは私たちの問題の解決策のようです。しかし、私はチュートリアルを通り抜けることができません、それらはすべて、役に立つというよりもどういうわけか混乱しています。

私が最初に達成したいのは、2つの小さなプロジェクトを持つことだけです。1つ目は1つのメソッドを持つ1つのクラスを持ち、2つ目はこのメソッドを呼び出すだけです。最初のプロジェクトはjarにコンパイルされ、2番目のプロジェクトによって共有リポジトリからダウンロードされます。

ご協力いただきありがとうございます。

4

1 に答える 1

3

マルチモジュールプロジェクトについては、ドキュメントで説明されています。

http://ant.apache.org/ivy/history/latest-milestone/tutorial/multiproject.html

ソースコードはsubversionで利用できます。

http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/example/multi-project/

それがどのように機能するかの簡略化された要約:

ラッパービルド

個々のモジュールビルドを正しい順序で呼び出します。モジュールAがモジュールBに依存している場合、Bが最初に構築されます。

<project xmlns:ivy="antlib:org.apache.ivy.ant" name="build-all" default="build">

    <!--
    ==========================================================================
    Use the ivy buildlist task to create an ordered list of sub-project builds
    ==========================================================================
    -->
    <target name="build-list">
        <ivy:buildlist reference="build-path">
            <fileset dir="." includes="modules/**/build.xml"/>
        </ivy:buildlist>
    </target>

    <!--
    ==============================
    Invoke targets in sub-projects
    ==============================
    -->
    <target name="build" depends="build-list" description="Invoke build target on sub-projects">
        <subant target="build" buildpathref="build-path" />
    </target>

</project>

詳細については、ビルドリストのドキュメントを参照してください。

モジュールビルド

各モジュールは、ビルドの開始時に依存関係をダウンロードします

<target name="init">
    <ivy:settings file="../../ivysettings.xml"/>
    <ivy:resolve/>
</target>

最後に、ビルドされたアーティファクトを公開します。

<target name="publish" depends="build" description="Publish module artifacts to the respository">
    <ivy:publish resolver="${publish.resolver}" pubrevision="${publish.revision}" overwrite="true">
        <artifacts pattern="${build.dir}/[artifact].[ext]"/>
    </ivy:publish>
</target>

これらすべてが機能するためには、各モジュールが依存するものと公開するものを宣言する必要があることを忘れないでください

<ivy-module version='2.0'>

    <info organisation='com.myorg' module='mymod'/>

    <publications>
        <artifact name="mymod" type="jar"/>
    </publications>

    <dependencies>
         ..
    </dependencies>

</ivy-module>
于 2010-11-05T21:22:23.203 に答える