build/lib

  • Автор темы Автор темы Beliano
  • Дата начала Дата начала

Beliano

Заблокирован
Заблокирован
Мастер реакций
Знаток великого письма
Любитель реакций
Знаток письма
Сообщения
1 045
Розыгрыши
0
Решения
1
Репутация
243
Реакции
653
Баллы
618
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Хроники
  1. Harbingers of War
Исходники
Присутствуют
Сборка
Samsklepal
Подскажите как build добавить внешние библиотеки? В IDE папка с библиотеками задана.
Допустим dist/libs
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<project name="HarbingersOfWar" default="cleanup" basedir=".">

<property name="build" location="/build" />
<property name="build.bin" location="${build}/bin" />
<property name="build.dist" location="${build}/dist" />
<property name="datapack" location="dist" />
<property name="src" location="java" />


<target name="checkRequirements" description="Check Requirements.">
<fail message="Ant 1.8.2 is required. But your version is ${ant.version} and if you are using Eclipse probably is outdated.">
<condition>
<not>
<antversion atleast="1.8.2" />
</not>
</condition>
</fail>
<available classname="java.util.stream.Stream" property="JDK8.present" />
<fail unless="JDK8.present" message="Java 1.8 is required. But your version is Java ${ant.java.version} and probably JDK is not installed." />
</target>

<target name="init" depends="checkRequirements" description="Create the output directories.">
<delete dir="${build.bin}" quiet="true" />
<mkdir dir="${build.bin}" />
</target>

<target name="compile" depends="init" description="Compile the source.">
<javac srcdir="${src}" destdir="${build.bin}" compiler="modern" debug="true" debuglevel="lines,vars,source" includeantruntime="false" source="8" target="8" encoding="UTF-8" />
</target>

<target name="jar" depends="compile" description="Create the jar files.">
<tstamp>
<format property="time.stamp" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>

<jar destfile="${build.dist}/Server.jar" level="9">
<fileset dir="${build.bin}" />
<manifest>
<attribute name="Build-By" value="${user.name}" />
<attribute name="Build-Date" value="${time.stamp}" />
<attribute name="Main-Class" value="lin2wofe.Server" />
</manifest>
</jar>
</target>

<target name="adding-core" depends="jar" description="Adding the compiled jars to the Zip file.">
<zip destfile="${build}/HarbingersOfWar.zip" basedir="${build.dist}" level="9" />
</target>

<target name="adding-datapack" depends="adding-core" description="Updating the Zip file with datapack content.">
<zip destfile="${build}/HarbingersOfWar.zip" basedir="${datapack}" update="true" level="9" />
</target>

<target name="adding-readme" depends="adding-datapack" description="Adding readme.txt to the Zip file.">
<zip destfile="${build}/HarbingersOfWar.zip" basedir="." includes="readme.txt" update="true" level="9" />
</target>

<target name="cleanup" depends="adding-readme" description="Cleaning the build folder.">
<delete dir="${build.dist}" />
</target>
</project>

<target name="compile" depends="init" description="Compile the source.">
<javac srcdir="${src}" destdir="${build.bin}" compiler="modern" debug="true" debuglevel="lines,vars,source" includeantruntime="false" source="8" target="8" encoding="UTF-8" />
</target>

<target name="jar" depends="compile" description="Create the jar files.">
<tstamp>
<format property="time.stamp" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>

<jar destfile="${build.dist}/Server.jar" level="9">
<fileset dir="${build.bin}" />
<manifest>
<attribute name="Build-By" value="${user.name}" />
<attribute name="Build-Date" value="${time.stamp}" />
<attribute name="Main-Class" value="lin2wofe.Server" />
</manifest>
</jar>
</target>

<target name="adding-core" depends="jar" description="Adding the compiled jars to the Zip file.">
<zip destfile="${build}/HarbingersOfWar.zip" basedir="${build.dist}" level="9" />
</target>

<target name="adding-datapack" depends="adding-core" description="Updating the Zip file with datapack content.">
<zip destfile="${build}/HarbingersOfWar.zip" basedir="${datapack}" update="true" level="9" />
</target>

<target name="adding-readme" depends="adding-datapack" description="Adding readme.txt to the Zip file.">
<zip destfile="${build}/HarbingersOfWar.zip" basedir="." includes="readme.txt" update="true" level="9" />
</target>

<target name="cleanup" depends="adding-readme" description="Cleaning the build folder.">
<delete dir="${build.dist}" />
</target>
</project>
 
@Belianonea, попробуйте так
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<project name="HarbingersOfWar" default="cleanup" basedir=".">

    <property name="build" location="/build" />
    <property name="build.bin" location="${build}/bin" />
    <property name="build.dist" location="${build}/dist" />
    <property name="datapack" location="dist" />
    <property name="src" location="java" />

    <property name="libs" location="dist/libs" />
    
    <path id="classpath">
        <fileset dir="${libs}">
            <include name="**/*.jar" />
        </fileset>
    </path>
    
    <pathconvert property="jar.list" pathsep=" " refid="classpath">
        <mapper type="flatten" />
    </pathconvert>
    
    <property name="build.classpath" refid="classpath"/>
    
    ...

</project>

Для каждого модуля, который нуждается в подключении библиотек указываем в теге javac атрибут classpath
XML:
<javac ... classpath="${build.classpath}">
    ...
</javac>
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
На Gradle проще будет?
 
На Gradle проще будет?
если возникают такие вопросы по ant, то в вашем случае настроить сборку проекта через gradle будет не проще

чем собирать проект, ant, maven или gradle зависит уже от требований к системе сборщика
 
У меня так вот такой, немного извратный build.xml юзается :)
правда он у меня не предназначен для так сказать автономного использования в самом ant - юзается он чисто в самом эклипсе, в External Tools и все что делает - это компилит ядро, собирает нужные jar'ки и кладет их в папку с сервером.
А полное копирование всей сборки в отдельную папку при билде мне как-то никогда и не требовалось.
XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="jar_gameserver" name="l2r_server_gc">
    <property environment="env" />
    <property name="debug" value="true" />
    <property name="debug.level" value="lines,vars,source" />
    <property name="version.target" value="1.8" />
    <property name="version.source" value="1.8" />
    <property name="nowarn" value="on" />
    <property name="dir.server" location="C:/Work/la2_server_gc/" />
    <property name="dir.libs" location="../libs" />
    <property name="dir.source" value="sources" />
    <property name="dir.source.commons" value="${dir.source}/l2p/commons" />
    <property name="dir.source.gameserver" value="${dir.source}/l2p/gameserver" />
    <property name="dir.source.loginserver" value="${dir.source}/l2p/loginserver" />
    <property name="dir.target" value="classes" />
    <property name="dir.target.commons" value="${dir.target}/l2p/commons" />
    <property name="dir.target.gameserver" value="${dir.target}/l2p/gameserver" />
    <property name="dir.target.loginserver" value="${dir.target}/l2p/loginserver" />
    <property name="jar.commons" value="${dir.target}/commons-l2.jar" />
    <property name="jar.gameserver" value="${dir.target}/gameserver.jar" />
    <property name="jar.loginserver" value="${dir.target}/loginserver.jar" />
    <path id="common.userclasspath">
        <fileset dir="${dir.libs}">
            <include name="/*.jar"/>
        </fileset>
    </path>
    <path id="server.classpath">
        <pathelement location="classes" />
        <path refid="common.userclasspath" />
    </path>
    <pathconvert property="jar.list" pathsep=" " refid="common.userclasspath">
        <mapper type="flatten" />
    </pathconvert>
    <tstamp>
        <format property="build.tstamp" pattern="dd.MM.yyyy HH:mm" />
    </tstamp>
    <!-- Delete .class -->
    <target name="del_commons" description="Удаление старых файлов (commons)">
        <delete dir="${dir.target.commons}" />
    </target>
    <target name="del_gameserver" description="Удаление старых файлов (GS)">
        <delete dir="${dir.target.gameserver}" />
    </target>
    <target name="del_loginserver" description="Удаление старых файлов (LS)">
        <delete dir="${dir.target.loginserver}" />
    </target>
    <!-- Compile .java -->
    <target name="compile_commons" description="Компиляция (commons)">
        <mkdir dir="${dir.target.commons}" />
        <javac debug="${debug}" debuglevel="${debug.level}" nowarn="${nowarn}" includeantruntime="false" encoding="UTF-8" destdir="${dir.target}" source="${version.source}" target="${version.target}">
            <compilerarg value="-Xlint:unchecked" />
            <src path="${dir.source.commons}" />
            <classpath refid="server.classpath" />
        </javac>
    </target>
    <target name="compile_gameserver" description="Компиляция (GS)">
            <mkdir dir="${dir.target.gameserver}" />
            <javac debug="${debug}" debuglevel="${debug.level}" nowarn="${nowarn}" includeantruntime="false" encoding="UTF-8" destdir="${dir.target}" source="${version.source}" target="${version.target}">
                <!-- <compilerarg value="-Xlint:unchecked" /> -->
                <src path="${dir.source.gameserver}" />
                <classpath refid="server.classpath" />
            </javac>
    </target>
    <target name="compile_loginserver" description="Компиляция (LS)">
            <mkdir dir="${dir.target.loginserver}" />
            <javac debug="${debug}" debuglevel="${debug.level}" nowarn="${nowarn}" includeantruntime="false" encoding="UTF-8" destdir="${dir.target}" source="${version.source}" target="${version.target}">
                <compilerarg value="-Xlint:unchecked" />
                <src path="${dir.source.loginserver}" />
                <classpath refid="server.classpath" />
            </javac>
    </target>
    <!-- Build .jar -->
    <target name="jar_commons" description="Сборка JAR (commons)">
        <delete file="${jar.commons}" />
        <jar destfile="${jar.commons}" level="9">
            <fileset dir="${dir.target}" includes="**/l2p/commons/" />
            <manifest>
                <attribute name="Build-By" value="${user.name}" />
                <attribute name="Build-Date" value="${build.tstamp}" />
            </manifest>
        </jar>
        <copy file="${jar.commons}" todir="${dir.libs}" />
        <copy file="${jar.commons}" todir="${dir.server}/libs/" />
    </target>
    <target name="jar_gameserver" description="Сборка JAR (GS)">
        <delete file="${jar.gameserver}" />
        <jar destfile="${jar.gameserver}" level="9">
            <fileset dir="${dir.target}" includes="**/l2p/gameserver/" />
            <manifest>
                <attribute name="Main-Class" value="l2p.gameserver.GameServer" />
                <attribute name="Class-Path" value="${jar.list}" />
                <attribute name="Build-By" value="${user.name}" />
                <attribute name="Build-Date" value="${build.tstamp}" />
            </manifest>
        </jar>
        <copy file="${jar.gameserver}" todir="${dir.server}" />
    </target>
    <target name="jar_loginserver" description="Сборка JAR (LS)">
        <delete file="${jar.loginserver}" />
        <jar destfile="${jar.loginserver}" level="9">
            <fileset dir="${dir.target}" includes="**/l2p/loginserver/" />
            <manifest>
                <attribute name="Main-Class" value="l2p.loginserver.AuthServer" />
                <attribute name="Class-Path" value="${jar.list}" />
                <attribute name="Build-By" value="${user.name}" />
                <attribute name="Build-Date" value="${build.tstamp}" />
            </manifest>
        </jar>
        <copy file="${jar.loginserver}" todir="${dir.server}" />
    </target>
</project>
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
А
если возникают такие вопросы по ant, то в вашем случае настроить сборку проекта через gradle будет не проще

чем собирать проект, ant, maven или gradle зависит уже от требований к системе сборщика
Ну просто тут говорят фу ant это не 2010 итд)
 
Ну просто тут говорят фу ant это не 2010 итд)
ну тот же л2жМобиус все еще собирает ant`ом, в то время как л2жОрг уже походу давно собирает через gradle.

В любом случае при желании можно почитать за плюсы и минусы того или иного сборщика ява проекта, и уж потом сделать какие-то выводы нужен он этот переход с одного сборщика на другой или нет
 
Если все настроено под один инструмент много лет назад и до сих пор без проблем работает, то какой смысл менять на что-то другое, в процессе настройки почти 100% натыкаясь на какие-то грабли?
 
Если все настроено под один инструмент много лет назад и до сих пор без проблем работает, то какой смысл менять на что-то другое, в процессе настройки почти 100% натыкаясь на какие-то грабли?
Лично меня вымораживал способ подключения зависимостей в виде подготовленных файлов-либок, вместо того, чтобы прописать одну строчку и билдер сам за тебя выкачал/достал из кэша нужную. Ну и пример - обновление версии либки: в градле/мавене/... поменял циферку(-и) и у тебя либка обновилась при следующем билде/подтягивании зависимостей, а в анте нужно качать либу и руками пихать в папку.

P.S.: После твоих слов молодые девелоперы, сидящие на легаси проектах, начали рвать волосы. :pandaredlol:
 
Назад
Сверху Снизу