Манифест Netbeans - PullRequest
       64

Манифест Netbeans

21 голосов
/ 06 августа 2009

Можно ли добавить записи в файл manifest.mf файлов jar, сгенерированных netbeans?

например, для сборки пакета osgi.

Ответы [ 8 ]

19 голосов
/ 04 декабря 2011

Обратите внимание, что вы можете создавать манифест на лету с помощью задачи ant и динамически устанавливать свойства.

Во-первых, вы должны обновить файл «project.properties» Netbeans, находящийся в каталоге «nbproject». Добавьте следующую строку в файл:

manifest.file=manifest.mf

Затем создайте задачу ant для создания / обновления манифеста, используя файл "build.xml". В этом примере мы установим номер версии и дату файла JAR.

<target name="-pre-init">
   <property name="project.name" value="My Library" />
   <property name="version.num" value="1.4.1" />
   <tstamp>
      <format property="NOW" pattern="yyyy-MM-dd HH:mm:ss z" />
   </tstamp>

   <!--
   <exec outputproperty="svna.version" executable="svnversion">
       <arg value="-c" />
       <redirector>
           <outputfilterchain>
               <tokenfilter>
                   <replaceregex pattern="^[0-9]*:?" replace="" flags="g"/>
                   <replaceregex pattern="M" replace="" flags="g"/>
               </tokenfilter>
           </outputfilterchain>
       </redirector>
   </exec>
   -->


   <manifest file="MANIFEST.MF">
      <attribute name="Bundle-Name" value="${project.name}" />           
      <attribute name="Bundle-Version" value="${version.num}" />
      <attribute name="Bundle-Date" value="${NOW}" />
      <!--<attribute name="Bundle-Revision" value="${svna.version}" />-->
      <attribute name="Implementation-Title" value="${project.name}" />
      <attribute name="Implementation-Version" value="${version.num}" />
      <attribute name="Implementation-URL" value="http://www.example.com" />
   </manifest>

</target>

Это создаст файл манифеста в директории вашего проекта NetBeans и поместит его в ваш JAR-файл. Если вы хотите удалить автоматически сгенерированный файл манифеста из каталога проекта netbeans, просто создайте еще одну задачу ant (конечно, после jar):

<target name="-post-jar">
  <delete file="MANIFEST.MF"/>
</target> 
6 голосов
/ 22 октября 2009

Интересная информация может быть здесь:

http://wiki.netbeans.org/FaqNoMainClass

2 голосов
/ 26 сентября 2010

У меня есть проект библиотеки классов Java с настраиваемым файлом манифеста - идеально подходит для пакета OSGI. Чтобы это заработало, сначала отредактируйте project.properties и установите:

manifest.file=manifest.mf
manifest.available=true

Создайте свой собственный файл manifest.mf в каталоге проекта.

(На этом этапе, если вы попытаетесь выполнить очистку / сборку, вы все равно не получите свой собственный файл манифеста - NetBeans предоставит его. Это потому, что цель build-impl.xml Ant "-do-jar-with- "библиотеки-без-манифеста" вызывается сразу после "-do-jar-with-manifest", перезаписывая файл JAR пользовательского манифеста стандартным JAR-файлом манифеста NetBeans.)

Добавьте пользовательскую цель в файл build.xml следующим образом:

<target name="-do-jar-with-libraries-without-manifest">
    <!-- Inserted to prevent target from running so we can have a custom
         manifest file with a class library project type. -->
</target>

Протестировано в NetBeans 6.7.1

1 голос
/ 18 ноября 2013

Если вы используете maven (nbm-maven-plugin), посмотрите на это

Плагин NBM Maven

1 голос
/ 12 августа 2009

в том же каталоге, что и build.xml Вы можете поместить свой файл manifest.mf

Я использую Netbeans 6.7.1 Оказывается, что build-imp.xml (фактический скрипт сборки, используемый Netbeans)

  • не имеет цели, которая запускается, если 'с манифестом, без основного класса'
  • но у него есть что-то вроде 'с манифестом, с основным классом'

Итак ... убедитесь, что у вас есть свойства проекта, запустите main-Class, заполненный -anything-

я думаю, что это какая-то недокументированная особенность: (

это мой манифест:

Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
Bundle-ManifestVersion: 2
Bundle-Name: jinstall
Bundle-SymbolicName: jinstall
Import-Package: ( .... )
Export-Package: ( .... )
Bundle-Activator: ( ..... )
0 голосов
/ 09 октября 2018

Вы можете редактировать nbproject/build-impl.xml, добавляя необходимые свойства, например:

....
<target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+main.class.available" name="-do-jar-set-mainclass">
    <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
        <attribute name="Main-Class" value="${main.class}"/>
        <attribute name="Property1" value="foo"/>
        <attribute name="Property2" value="bar"/>
    </manifest>
</target>
....

Это приведет к MANIFEST.MF в jar-файле следующим образом:

Manifest-Version: 1.0
...
Property1: foo
Property2: bar

Проверено на Netbeans 8.1.

0 голосов
/ 07 ноября 2009

Почему бы не использовать проект maven, который хорошо сработал для меня? Например. apache felix

См. этот подключаемый пример Swing , который я создал в netbeans.

0 голосов
/ 29 сентября 2009

См. эту статью .

Здесь описано, как

  • создать собственные цели муравья
  • добавить ручные записи в manifest.mf для выходного JAR
  • запуск пользовательских целей муравья из Netbeans
...