сделать файл .jar с исходным кодом и структурой проекта? - PullRequest
2 голосов
/ 11 мая 2009

Интересно, возможно ли это с ant и java:

У меня есть проект Java, который выглядит следующим образом:

./
  build.xml
  src/
    com/
      example/
        {.java files here} 
  bin/
    com/
      example/
        {compiled .class files here} 
  lib/
    {3rd-party jar files here}
  dist/
    {jar file(s) here}

Я знаю, как создать файл .jar, содержащий содержимое в каталоге bin/, с правильным манифестом для запуска моего основного класса Java.

Что я хотел бы сделать, если это возможно, это создать файл .jar, который:

  1. Java может выполняться ("java -jar myproject.jar")
  2. Кто-то еще может разархивировать, чтобы создать структуру проекта. (включая все подкаталоги, кроме каталога "dist /")

Возможно ли это? Кажется, я не могу сказать Java использовать подкаталог bin / файла .jar в качестве пути к классу, возможно, я каким-то образом испортил синтаксис.

edit: Хорошо, звучит как попытка заставить один объект служить двум (слишком многим) целям. Я отказался от этого подхода, вместо этого создал стандартный файл .jar в качестве исполняемого файла и файл .zip с исходным кодом (build.xml + каталоги src и lib). Таким образом, есть 2 простых загрузки, более 1 файла, но не так уж плохо.

Ответы [ 2 ]

4 голосов
/ 11 мая 2009

Нет, UrlClassLoader всегда пытается найти классы, основанные на корне, и URL-адрес jar всегда будет извлекать записи, основанные на корне файла jar.

Вы можете создать файл jar, в котором есть двоичные файлы из корневого каталога, но есть исходные файлы в src и т. Д. Это не так уж и плохо, если вы действительно просто выбрали com в качестве единственного " root "пакет.

0 голосов
/ 11 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...