2013-09-20 2 views
10

Как добавить дополнительные параметры для файла манифеста, используя Maven для сторонних баннеров. После версии Java 7_25 веб-запуск Java требует, чтобы кодовые базы и разрешения добавлялись во все файлы jar загрузки. Я хочу вставить их во время пения.добавить атрибут разрешений в манифест сторонних банках с использованием maven

Пожалуйста, дайте мне знать, если вам нужна какая-либо информация. Заранее спасибо.

+0

Может ли [über-JAR] (http://maven.apache.org/plugins/maven-shade-plugin/index.html) будет вам полезен? –

+0

@SanderVerhagen uberjar имеет свою ошибку. Если два или более банок содержат ресурсы с одним и тем же путем, то трудно определить, какая из них будет загружена. У меня была проблема с пружинными банками. Многие весенние банки содержат файлы META-INF/spring. *, Которые перекрываются друг с другом. – gerrytan

+0

Не риторический вопрос: как это отличается от наличия этих файлов в пути к классам одновременно? –

ответ

4

Я сделал небольшой скрипт для муравьев (это экстракт, на самом деле он также исключает некоторый криптографический файл).

только что установил значение свойства каталога в каталог, который содержит банки для обновления и запускает целевые «разрешения-разрешения».

она должна быть простой в использовании с Maven-муравей:

<?xml version="1.0" encoding="UTF-8"?> 
<project basedir="." name="project"> 
    <taskdef resource="net/sf/antcontrib/antcontrib.properties" /> 

    <property name="directory" value="WebContent/jnlpApplication" /> 

    <target name="give-permissions"> 
     <foreach target="_re-jar" param="currentFile" parallel="false"> 
      <path> 
       <fileset dir="${directory}" casesensitive="yes"> 
        <include name="**/*.jar" /> 
       </fileset> 
      </path> 
     </foreach> 

     <move todir="${directory}" overwrite="true"> 
      <fileset dir="${directory}.tmp" casesensitive="yes"> 
       <include name="**/*.jar" /> 
      </fileset> 
     </move> 

     <delete dir="${directory}.tmp" /> 
    </target> 

    <target name="_re-jar"> 
     <basename property="filename" file="${currentFile}" /> 

     <jar destfile="${directory}.tmp/${filename}"> 
      <zipfileset src="${currentFile}"> 
       <exclude name="META-INF/**.RSA" /> 
       <exclude name="META-INF/**.SF" /> 
      </zipfileset> 
      <manifest> 
       <attribute name="Permissions" value="all-permissions" /> 
       <attribute name="Codebase" value="*" /> 
       <attribute name="Application-Name" value="jnlpApplicationName" /> 
      </manifest> 
     </jar> 
    </target> 
</project> 
+0

спасибо за ответ, я понял. Теперь он отлично работает для меня. – sats

+0

отличный сценарий, одна второстепенная вещь: мне пришлось добавить путь к классу ant-contrib: user121196

+0

Если вы поместите файл ant-contrib-1.0b3.jar в каталог ant/lib вместе со своими зависимостями (поставляется с zip-файлом), то вы не нужна ссылка в файле build.xml. http://ant-contrib.sourceforge.net/. – karl

Смежные вопросы