Как я могу автоматизировать компиляцию большого проекта Java?

StackOverflow https://stackoverflow.com/questions/870298

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

Также прочтите руководство.

Вот простой файл сборки, который скомпилирует все файлы 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top