Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Компиляция без build.xml или как сделать
#1
Заранее извиняюсь если пишу не в тот топик, но прошу не закидывать помидорами за мое нубство и т.д. Я это и сам понимаю. Хочется научиться, но особо мануалов нет, везде билд.хмл присутствует.
Собсно есть сурсы, но без build.xml. Сурсы, если что, interlude.su, и как наверное кто то знает, в шаровых нет build.xml. Да да, я уже понял что можно подогнать с другой сборки, но с какой и как это сделать? Заранее спасибо и прошу прощения, опять же, за нубство.
Ответ
#2
Хорошо, разберу build.xml от силентиумов, которые я когда-то пилил (я уже даже не помню, что там делал :redlolSmile
Код:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Silentium" default="dist" basedir=".">
    <property name="src" location="java"/>
    <property name="lib" location="lib"/>
    <property name="build" location="build-ant"/>
    <property name="build.classes" location="${build}/classes"/>
    <property name="build.dist" location="${build}/dist"/>
    <property name="build.dist.auth" location="${build.dist}/authserver"/>
    <property name="build.dist.game" location="${build.dist}/gameserver"/>

    <path id="classpath">
        <fileset dir="${lib}">
            <include name="*.jar"/>
        </fileset>
    </path>

    <pathconvert property="manifest.libs" pathsep=" ">
        <path refid="classpath"/>
        <mapper>
            <chainedmapper>
                <flattenmapper />
                <globmapper from="*.jar" to="../libs/*.jar"/>
            </chainedmapper>
        </mapper>
    </pathconvert>

    <target name="init" depends="clean,checkRequirements" description="Create the output directories.">
        <mkdir dir="${build}"/>
        <mkdir dir="${build.classes}"/>
        <mkdir dir="${build.dist}"/>
        <mkdir dir="${build.dist.auth}"/>
        <mkdir dir="${build.dist.game}"/>
    </target>

    <target name="compile" depends="init" description="Compile the source.">
        <javac srcdir="${src}" classpathref="classpath" destdir="${build.classes}" compiler="javac1.7" debug="true" debuglevel="lines,vars,source" includeantruntime="false" source="1.7" target="1.7"/>
    </target>

    <target name="jar" depends="compile" description="Create the jar file.">
        <jar destfile="${build}/silentium-main.jar">
            <fileset dir="${build.classes}"/>
            <manifest>
                <attribute name="Main-Class" value="silentium.commons.Server"/>
                <attribute name="Class-Path" value="${manifest.libs}"/>
            </manifest>
        </jar>

        <copy todir="${build.dist.auth}/libs">
            <fileset dir="${build}">
                <include name="*.jar"/>
            </fileset>
        </copy>

        <copy todir="${build.dist.game}/libs">
            <fileset dir="${build}">
                <include name="*.jar"/>
            </fileset>
        </copy>
    </target>

    <target name="dist" depends="jar">
        <copy todir="${build.dist.auth}/libs">
            <fileset dir="${src}/../lib">
                <include name="*.jar"/>
            </fileset>
        </copy>

        <copy todir="${build.dist.game}/libs">
            <fileset dir="${src}/../lib">
                <include name="*.jar"/>
            </fileset>
        </copy>

        <copy todir="${build.dist.auth}">
            <fileset dir="dist">
                <include name="AuthServer_loop.sh"/>
                <include name="AuthServer.*"/>
            </fileset>
        </copy>

        <copy todir="${build.dist.game}">
            <fileset dir="dist">
                <include name="GameServer_loop.sh"/>
                <include name="GameServer.*"/>
            </fileset>
        </copy>

        <fixcrlf srcdir="${build.dist.game}" eol="lf" eof="remove" includes="**/*.sh"/>
        <fixcrlf srcdir="${build.dist.auth}" eol="lf" eof="remove" includes="**/*.sh"/>
        <fixcrlf srcdir="${build.dist.game}" eol="crlf" eof="remove" includes="**/*.bat"/>
        <fixcrlf srcdir="${build.dist.auth}" eol="crlf" eof="remove" includes="**/*.bat"/>

        <mkdir dir="${build.dist.game}/log"/>
        <mkdir dir="${build.dist.auth}/log"/>

        <mkdir dir="${build.dist.game}/config"/>
        <mkdir dir="${build.dist.auth}/config"/>

        <copy todir="${build.dist.game}/config">
            <fileset dir="config/game"/>
        </copy>

        <copy todir="${build.dist.auth}/config">
            <fileset dir="config/auth"/>
        </copy>

        <mkdir dir="${build.dist.game}/data"/>
        <copy todir="${build.dist.game}/data">
            <fileset dir="data"/>
        </copy>

        <mkdir dir="${build.dist}/tools"/>
        <copy todir="${build.dist}/tools">
            <fileset dir="tools"/>
        </copy>
    </target>

    <target name="clean" description="Remove the output directories.">
        <delete dir="${build}"/>
    </target>

    <target name="checkRequirements" description="Check requirements.">
        <echo>Verification of your JDK version.</echo>
        <available classname="java.lang.AutoCloseable" property="JDK7.present"/>
        <fail unless="JDK7.present" message="Java 1.7 is required, but your version is Java ${ant.java.version}. Install latest JDK."/>
    </target>
</project>

Изначально сборка делится на 2 вещи: датапак и исходники. Build.xml собирает это все воедино и зависит сугубо от того какая сборка используется.
Хранится Build.xml в корне исходников.

Используемые теги:
property - параметр, указывается обычно в начале, как пример: <property name="src" location="java"/> - папка java
target - параметр, приводящий к результату т.е. какому-то действию, будь то очистка папки или же компиляция, имеет name (название) и depends (зависимость, название другого target).
Собственно разобраться можно легко в примере выше и написать свое....
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#3
Спасибо большое за ответ. Буду пробовать. И еще вопрос. Видел тут в разделе мануалы видео или что то такое, где человек декомпильный файл в сборку вставлял через команду javac. Можем ли мы провернуть такое же имея исходный файл в java, и уже закомпилированное ядро?


Разобрался со всем. Спасибо zubastik. Тему можно Close
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Компиляция сборки kinder10 11 4,412 06-04-2016, 06:16 PM
Последний пост: Zubastic
  Декомпиляция и Компиляция xPalarmax 4 2,072 12-08-2013, 10:20 AM
Последний пост: xPalarmax
  CTF как сделать старт только с 20 по 85 Sensation 6 1,971 02-08-2013, 06:08 PM
Последний пост: Zubastic
  Как сделать апдейт? Time of Gods 2 1,246 12-08-2012, 10:09 PM
Последний пост: Zubastic
  Как сделать запрос в базу? xnekt0x 2 1,542 11-22-2012, 08:03 PM
Последний пост: xnekt0x
  Как сделать чтобы не проходить квсеты на рб Ziky 20 10,158 10-23-2012, 09:45 AM
Последний пост: Zubastic
  как сделать скилл нельзя юзать на себя revlon 2 1,316 09-29-2012, 06:06 PM
Последний пост: revlon
  Как сделать атаку после скилла revlon 6 1,690 09-27-2012, 07:49 PM
Последний пост: revlon
  Как сделать сохранение бафов l2j bestworld 3 2,326 09-07-2012, 02:39 PM
Последний пост: gorodetskiy
  [Мануал]Компиляция исходного кода В NetBeans SkyMD 2 5,564 08-13-2012, 01:29 PM
Последний пост: SkyMD

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)