Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

вторник, 23 ноября 2010 г.

Java for fun: Как собрать Groovy проект с помощью Ant

Потратил на написание ant build пару часов, думаю их сэкономить читателю. Итак есть проект написанный на groovy. Структура проекта такая:

 В корне находится build.xml, листинг которого я представлю позже. Файл build.num содержит номер билда и генерится антом автоматически.
Читать дальше...

Папка srс содержит groovy исходники разложенные по двум подпапкам - test и main, в каждой из которой находится папка groovy с папками пакетов и исходников. Исходники разеделены на тесты и рабочий код с тем, чтобы проще было делать сборку. Дополнительная папка groovy для того, чтобы отделять java код от groovy в будущем.

В корне проекта так же содержится папка lib с библиотеками, необходимыми для работы ant build.

В папке production содержится результат компиляции groovy кода в классы, собранные в jar библиотеку.

А вот исходник build.xml.
<?xml version="1.0" encoding="UTF-8"?>
<project default="build">
    <target name="compile">  
        <delete dir="target/classes"/>
        <delete dir="target/test-classes"/>    
        <mkdir dir="target/classes"/>
        <mkdir dir="target/test-classes"/>
  
        <copy todir="target/classes/webapp">
            <fileset dir="src/main/webapp"/>
        </copy>
  
        <taskdef 
            resource="org/codehaus/groovy/antlib.xml" 
            classpath="lib/groovy-all-1.7.2.jar"/>

        <groovyc srcdir="src/main/groovy" destdir="target/classes">
            <classpath>
                <path path="lib/junit-4.4.jar"/>
                <path path="lib/groovy-all-1.7.2.jar"/>    
            </classpath>
            <javac source="1.5" target="1.5" debug="on" />
        </groovyc>
   
        <groovyc srcdir="src/test/groovy" destdir="target/test-classes">
            <classpath>
                <path path="lib/junit-4.4.jar"/>
                <path path="lib/groovy-all-1.7.2.jar"/>
                <path path="src/main/groovy"/>     
            </classpath>
            <javac source="1.5" target="1.5" debug="on" />
        </groovyc>   
    </target>

    <target name="jar">
        <property name="jar.name" value="blablabla"/>
            <property name="version.num" value="1.00"/> 
            <property name="jar.file.name" value="production/${jar.name}-${version.num}.jar"/>
            <delete file="${jar.file.name}"/>     
            <buildnumber file="build.num"/>
     
            <manifest file="MANIFEST.MF">
                <attribute name="Built-By" value="${user.name}"/>
                <attribute name="Implementation-Version" 
                    value="${version.num}-b${build.number}"/>         
            </manifest>

            <jar destfile="${jar.file.name}"
                basedir="target/classes/"
                includes="**/*.class"
                manifest="MANIFEST.MF"
            />
  
            <delete>
                <fileset file="MANIFEST.MF"/>
            </delete>
        </target>
  
        <target name="junit">
            <taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
                <classpath>
                    <path path="lib/ant-junit.jar"/>
                    <path path="lib/junit-4.4.jar"/>
                </classpath>
            </taskdef>
  
            <junit printsummary="yes" showoutput="yes" haltonfailure="no">
                <formatter type="brief" usefile="false"/>
                    <classpath>
                        <path path="lib/junit-4.4.jar"/>
                        <path path="target/test-classes"/>    
                        <path path="target/classes"/>
                        <path path="lib/groovy-all-1.7.2.jar"/>
                    </classpath>
                    <batchtest fork="no">
                        <fileset dir="target/test-classes">
                            <include name="**/*Test.class"/>
                        </fileset>
                    </batchtest>
            </junit>  
        </target> 
  
        <target name="build" depends="compile,jar,junit"/>
</project>
Задачи в нем три - компиляция groovy кода, сбор jar библиотеки и запуск всех тестов из папки test/src/groovy

Библиотеки junit-4.4.jar и groovy-all-1.7.2.jar из папки lib я нагло стырил у эклипса - думаю, найти их в сети будет не проблема. А вот ant-junit.jar находится в папке lib установленного Apache Ant (у меня вот тут D:\Java\apache-ant-1.7.1\lib\ant-junit.jar).

Enjoy

1 комментарий:

  1. You must get started at a weight limit that's relaxed on your present volume of fitness and strength and slowly improve for the better pounds restrictions as you boost.

    Here is my blog ... buy free weights

    ОтветитьУдалить