読者です 読者をやめる 読者になる 読者になる

antからmavenを使って依存ライブラリの解決。

maven-ant-tasksを使って出来た。こんな感じのbuild.xmlを書けばいい。

<?xml version="1.0"?>
<project xmlns:artifact="urn:maven-artifact-ant"
   name="maven-ant-tasks-learning" default="maven-retrieve" basedir=".">

    <property name="lib.dir" value="lib" />
	<property name="lib.src.dir" value="lib/sources" />

    <target name="maven-retrieve">
            	
    	<path id="maven-ant-tasks.classpath" path="lib-for-build/maven-ant-tasks-2.0.9.jar" />
        <typedef resource="org/apache/maven/artifact/ant/antlib.xml" 
	            uri="urn:maven-artifact-ant" 
	            classpathref="maven-ant-tasks.classpath" />
    	
    	<artifact:dependencies filesetId="dependency.fileset"
    		    sourcesFilesetId="sources.dependency.fileset"
    		    versionsId="dependency.versions">
    		<!-- maven形式で依存ライブラリを記述する -->
    	    <dependency groupid="com.google.collections" artifactid="google-collections" version="0.8" />
    	</artifact:dependencies>
    	
    	<!-- 
    	   不要なjarが紛れてしまう可能性があるので、一度綺麗にする。
    	-->
        <delete failonerror="no">
            <fileset dir="${lib.dir}" />
        </delete>
    	
        <copy todir="${lib.dir}">
            <fileset refid="dependency.fileset" />
            <!-- 
        	    maven式のフォルダ階層で拾ってくるので、フラットに展開する必要がある為 
        	    ただ展開されたjarにバージョン番号をつける方法が分からない。
            -->
            <mapper classpathref="maven-ant-tasks.classpath"
                    classname="org.apache.maven.artifact.ant.VersionMapper"
                    from="${dependency.versions}" to="flatten" />
        </copy>
        <copy todir="${lib.src.dir}">
            <fileset refid="dependency.fileset" />
            <mapper classpathref="maven-ant-tasks.classpath"
                    classname="org.apache.maven.artifact.ant.VersionMapper"
                    from="${dependency.versions}" to="flatten" />
        </copy>

	</target>

</project>