¿Es posible agregar entradas al archivo manifest.mf de jar generadas por netbeans?manifiesto de Netbeans
para construir un paquete de osgi, por ejemplo.
¿Es posible agregar entradas al archivo manifest.mf de jar generadas por netbeans?manifiesto de Netbeans
para construir un paquete de osgi, por ejemplo.
Tenga en cuenta que puede crear un manifiesto sobre la marcha a través de una tarea ant y establecer propiedades dinámicamente.
Primero, debe actualizar su archivo "project.properties" de Netbeans que se encuentra en el directorio "nbproject". Agregue la siguiente línea al archivo:
manifest.file=manifest.mf
A continuación, cree una tarea de hormiga para crear/actualizar el manifiesto mediante el archivo "build.xml". En este ejemplo, estableceremos el número de versión y la fecha del archivo 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>
Esto creará un archivo de manifiesto en su directorio de proyecto netbeans y lo incluirá en su archivo jar. Si desea borrar el archivo de manifiesto autogenerado desde el directorio del proyecto NetBeans, sólo tiene que crear otra tarea ant (post frasco por supuesto):
<target name="-post-jar">
<delete file="MANIFEST.MF"/>
</target>
en el mismo directorio que el build.xml puede poner su archivo manifest.mf
estoy usando Netbeans 6.7.1 Resulta que la acumulación de imp.xml (la escritura de la estructura real de Netbeans utiliza)
Así que .. asegurarse de que tiene las propiedades del proyecto-de gestión, la principal clase llena de -cualquier cosa-
Creo que eso es alguna característica no documentada :(
esta es mi contenido manifiesto:
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: (.....)
Sí, pero el problema con esto es que NetBeans niega cualquier propiedad que no entiende, y no entienden mucho. Todas las propiedades de osgi como Bundle-ManifestVersion o Bundle-Activator son rechazadas. –
No tengo ese problema en netbeans ordinarios 6.7.1 java-project. Puedo completar cualquier propiedad Bundle-xxxx en el manifiesto personalizado. Lo que sucedió en mi caso fue que ignoró por completo el archivo de manifiesto completo y creó un manifiesto predeterminado. – Houtman
Ver this article.
Aquí se describe cómo
El artículo al que se hace referencia no habla muy directamente a esta pregunta. Si te estás refiriendo a la tarea de hormiga personalizada ... ese no es un enfoque muy bueno para la simple tarea de agregar una entrada al manifiesto, en mi humilde opinión. –
Interesante la información puede estar aquí:
¡Esta es la respuesta correcta! Simplemente cree el manifest.mf deseado en la raíz del proyecto y anexe "manifest.file = manifest.mf" al archivo project.properties. Suponiendo que su proyecto no está estableciendo ningún valor en el manifiesto dinámicamente, eso es. Si necesitas ser elegante aquí, ¡es hora de recurrir a maven! –
Yepp. Esta es probablemente la mejor solución. Aunque de manera óptima, me gustaría que hubiera mejores opciones de GUI para modificar lo que termina en el archivo de manifiesto. Pero por ahora, esto servirá. – UmaN
Esto no funcionó para mí en NB 8. – Yster
¿Por qué no utilizar el proyecto a maven, que funcionó bien para mí? P.ej. apache felix
Ver this pluggable Swing example que he creado en netbeans.
Tengo un proyecto de Java Class Library con un archivo de manifiesto personalizado, perfecto para un paquete OSGI. Para conseguir este trabajo de edición primeros project.properties y establecer:
manifest.file=manifest.mf
manifest.available=true
crear su propio archivo manifest.mf personalizado en el directorio del proyecto.
(En este punto si intentas limpiar/compilar aún no obtendrás tu archivo de manifiesto personalizado - NetBeans proporcionará el suyo propio. Esto se debe a que el objetivo build-impl.xml Ant "-do-jar-with -libraries-without-manifest "se está llamando inmediatamente después de" -do-jar-with-manifest ", sobrescribiendo el archivo JAR de manifiesto personalizado con un JAR de manifiesto de NetBeans predeterminado)
Agregue un destino personalizado a su build.xml archivo de la siguiente manera:
<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>
Probado en NetBeans 6.7.1
En caso de que el uso de Maven (NBM-maven-plugin), mira esto
Esto funciona muy bien, ¡gracias! Pero, ¿por qué no cambian la Codebase y los Permisos (aún está configurado de manera predeterminada). ¿No se puede cambiar esto aquí? – hgerdin