Я пытаюсь создать JAR с Ant впервые и столкнулся с некоторыми трудностями.Вот структура каталогов моего проекта:
MyProj/
src/
com.me.org
Fizz
Buzz
dist/
classes/
В моем сборочном скрипте Ant я копирую все мои исходные файлы в папку dist/classes/
.Затем я включаю dist/classes
в качестве набора файлов в мою задачу JAR следующим образом:
<jar destfile="dist/myProj.jar">
<manifest>
<attribute name="Sealed" value="true" />
</manifest>
<fileset dir="dist/classes"/>
</jar>
Задача JAR выполняется и создает JAR.Однако когда я помещаю этот JAR-файл в путь сборки другого проекта (Eclipse) и пытаюсь использовать Fizz
или Buzz
внутри этого другого проекта, Eclipse импортирует их как:
классы импорта.com.me.org.Fizz;
и т. д.Это потому, что Eclipse должен думать, что мой каталог classes/
является пакетом!
Я предполагаю, что я могу кое-что сделать в манифесте, чтобы сказать: " Эй! Корневой пакет classes/com/
, а не classes/
!", поэтому они будут импортированы как:
import com.me.org.Fizz;
Я прочитал об Ant <manifest>
Задача и не мог найти то, что я искал.У кого-нибудь есть идеи, что я могу сделать здесь?
И, если вам интересно , почему Я хочу упаковать их в каталог classes/
, тогда я бы сказал, что этопотому что мне нравится идея иметь один каталог внутри JAR, который содержит весь путь к классам.И, особенно, если есть ресурсы пути к классам, отличным от Java (изображения, сценарии, файлы и т. Д.), Вам нужно место, чтобы поместить корень пакета (com/
) и эти другие ресурсы в один и тот же родительский каталог.
Первоначально я собирался назвать этот каталог classpath/
, но затем я решил использовать то же соглашение, что и спецификация файла WAR, для которого требуется наличие каталога classes/
внутри WAR.
Вот почему.;-) Заранее спасибо!