ANT: сортировка файлов в сгенерированном банке - PullRequest
2 голосов
/ 14 июня 2011

Мы используем ANT для создания файлов JAR.Чтобы создать 100% надежные сборки (независимо от того, на какой машине они сгенерированы), мы хотим, чтобы файлы в сгенерированных jar-файлах были отсортированы (чтобы использованный обфускатор давал одинаковый результат на каждой машине).Файлы jar (которые затем отправляются в обфускатор) создаются с использованием следующего фрагмента кода:

<jar jarfile="my.jar" compress="false" duplicate="fail">
    <fileset dir="classes" includes="com/**"/>
    <!-- another fix -->
    <fileset dir="classes" includes="org/**"/>
</jar>

Как мы можем обеспечить сортировку файлов в файле jar?Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 14 июня 2011

Здесь нет способа полагаться на собственный алгоритм сортировки. Спецификация Java не упоминает никакой логики сортировки. (не для файлов в JAR или файлов JAR в EAR). В вашем случае, если вы собираете через ANT или Maven, в какой-то момент базовая ОС решит, в каком порядке файлы будут считаны из файловой системы и упакованы в файл JAR.

Если вы действительно хотите, чтобы на нескольких машинах выполнялись сборки, лучше всего убедиться, что машины, которые вы используете для выполнения сборок, основаны на одном и том же оборудовании / ОС и используют одинаковые версии JDK, Ant ....

Другой вариант (возможно, более выполнимый) состоит в том, чтобы делегировать ваши сборки на выделенный сборочный компьютер (где вы также делаете обфускацию), опубликовать артефакты в каком-то репозитории и попросить ваших разработчиков использовать эти JAR-файлы из этого центрального репозитория. .

0 голосов
/ 14 июня 2011

ОК, я нашел решение:

<local name="sortedFiles"/>
<pathconvert property="sortedFiles" pathsep="${line.separator}">
     <sort>
         <fileset dir="classes" includes="com/**"/>
     </sort>
     <sort>
         <fileset dir="classes" includes="org/**"/>
     </sort>
</pathconvert>
<jar jarfile="my.jar" compress="false" duplicate="fail">
    <filelist dir="classes" files="${sortedFiles}"/>
</jar>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...