Как я могу автоматизировать компиляцию большого Java-проекта? - PullRequest
2 голосов
/ 15 мая 2009

Я работаю над проектом автоматизации для моего работодателя. У нас есть пул для каждой ревизии нашего исходного кода. Когда вы загружаете ревизию, вам нужно создать структуру каталогов с кучей сторонних включений, чтобы в конечном итоге построить проект. Я автоматизировал весь этот процесс до того момента, когда мой скрипт (.bat) компилировал каждое конкретное работающее Java-приложение. В этом проекте есть много приложений, и список каталогов выглядит примерно так:

Proj Name
   -variousincludesfolder1
   -variousincludesfolder2
   -variousincludesfolder3
   -variousincludesfolder4
   -runnableapplicationsandmoreincludes
       -con.java

Сейчас я хотел бы сделать автоматическую компиляцию con.java, но я не знаю, с чего начать. Люди предложили мне попробовать Ant, но любое автоматическое генерирование Ant-файлов, которое я получаю с помощью Eclipse, кажется достаточным только для сборки con.java, пока существует активный файл проекта. Есть ли способ автоматизировать это без использования eclipse, чтобы пакетный файл сам генерировал .jar?

Ответы [ 2 ]

6 голосов
/ 15 мая 2009

Это определенно работа для Муравья . Не полагайтесь на сгенерированные Eclipse Ant-файлы; Прочитайте руководство и напишите его самостоятельно. (Скорее всего, вы обнаружите, что Ant делает то, о чем вы и не думали, в вашем скрипте сборки.)

Если быть более точным, вот документация для задачи jar .

3 голосов
/ 16 мая 2009

Вы можете определить подстановочные знаки и совпадения шаблонов, чтобы включить / исключить все виды файлов и папок в вашей сборке. Взгляните на руководство Ant , чтобы увидеть, как такие вещи, как наборы файлов работают с фильтрами включения и исключения.

Кроме того, прочитайте учебник .

Вот простой файл сборки, который рассчитывает компилировать все java-файлы и ссылаться на все jar-файлы. Поместите его в каталог верхнего уровня:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" 
    href="http://www.ibm.com/developerworks/xml/library/x-antxsl/examples/example2/ant2html.xsl"?>
<project name="Proj Name" default="build" basedir=".">
    <property name="src.dir" value="${basedir}" description="base folder where the source files will be found.  Typically under /src, but could be anywhere.  Defaulting to root directory of the project" />
    <property name="build.dir" value="build" description="Where to put build files, separate from src and resource files." />

    <path id="master-classpath">
        <fileset dir="${basedir}" description="looks for any jar file under the root directory">
            <include name="**/*.jar" />
        </fileset>
    </path>

    <target name="build" description="Compile all JAVA files in the project">
        <javac srcdir="${src.dir}" 
            destdir="${build.dir}/classes" 
            debug="true" 
            deprecation="true" 
            verbose="false" 
            optimize="false"  
            failonerror="true">
            <!--master-classpath is defined above to include any jar files in the project subdirectories(can  be customized to include/exclude)-->
            <classpath refid="master-classpath"/>
            <!--If you want to define a pattern of files/folders to exclude from compilation...-->
            <exclude name="**/realm/**"/>
        </javac>  
    </target>

</project>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...