문제

NetBeans가 생성 한 항아리의 Manifest.mf 파일에 항목을 추가 할 수 있습니까?

예를 들어 OSGI 번들을 만들려면

도움이 되었습니까?

해결책

개미 작업을 통해 현증을 생성하고 속성을 동적으로 설정할 수 있습니다.

먼저 "nbproject"디렉토리에있는 NetBeans "Project.Properties"파일을 업데이트해야합니다. 파일에 다음 줄을 추가하십시오.

manifest.file=manifest.mf

다음으로 "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 Project Directory에 매니페스트 파일이 생성되어 JAR 파일에 넣습니다. NetBeans Project Directory에서자가 생성 된 매니페스트 파일을 삭제하려면 다른 개미 작업 (물론 Post jar)을 작성하십시오.

<target name="-post-jar">
  <delete file="MANIFEST.MF"/>
</target> 

다른 팁

흥미로운 정보는 여기에있을 수 있습니다.

http://wiki.netbeans.org/faqnomainclass

OSGI 번들에 적합한 사용자 정의 매니페스트 파일이있는 Java 클래스 라이브러리 프로젝트가 있습니다. 이 작업을 먼저 편집 한 프로젝트를 얻으려면 - 단점 및 설정 :

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

프로젝트 디렉토리에서 자신만의 사용자 정의 manifest.mf 파일을 만듭니다.

(이 시점에서 클린/빌드를 시도해 보면 여전히 사용자 정의 매니페스트 파일을 얻지 못할 것입니다. -"-do-jar-with-manifest"직후에 "Manifest"는 기본 NetBeans Manifest Jar로 사용자 정의 매니페스트 JAR 파일을 덮어 씁니다.)

다음과 같이 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에서 테스트

build.xml과 같은 dir에서 당신은 당신의 manifest.mf 파일을 넣을 수 있습니다.

NetBeans 6.7.1을 사용하고 있습니다. build-imp.xml (실제 빌드 스크립트 NetBeans가 사용하는 것)이라는 것이 밝혀졌습니다.

  • '메인 클래스없이 매니페스트와 함께'실행되는 대상이 없습니다.
  • 그러나 그것은 'Main-Class와 함께' 'Manifest'와 같은 것을 가지고 있습니다.

그래서 .. 프로젝트 속성, 실행, 메인 클래스가 있는지 확인하십시오.

나는 그것이 문서화되지 않은 기능이라고 생각합니다 :(

이것은 나의 매니페스트 내용입니다.

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: ( ..... )

Maven (NBM-Maven-Plugin)을 사용하는 경우 이것을보십시오.

NBM Maven 플러그인

나에게 잘 작동하는 A Maven 프로젝트를 사용하지 않는 이유는 무엇입니까? 예를 들어 아파치 펠릭스

보다 이 플러그 가능한 스윙 예제 내가 NetBeans에서 만든 것.

편집 할 수 있습니다 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>
....

이것은 a를 초래할 것입니다 MANIFEST.MF 다음과 같은 JAR 파일에서 :

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

NetBeans 8.1에서 테스트.

보다 이 기사.

여기에는 방법이 설명되어 있습니다

  • 나만의 개미 대상을 만듭니다
  • 출력 JAR의 Manifest.mf에 수동 항목을 추가하십시오
  • NetBeans에서 맞춤 개미 대상을 실행하십시오
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top