Скрытие манифестных записей с maven

При создании файла jar с maven он создаст файл манифеста в META-INF/MANIFEST.MF. В настоящее время его содержимое:

Manifest-Version: 1.0                                                                    
Archiver-Version: Plexus Archiver
Built-By: <my username>
Created-By: Apache Maven 3.1.0
Build-Jdk: 1.8.0_5

Как я могу скрыть манифестные записи? В частности, я хотел бы скрыть запись "Built-By:", потому что я не вижу причин, почему в банке должно быть указано мое имя пользователя.

Ответ 1

Документация к плагину maven-achiver кажется довольно ясной, что вы не можете удалить свойства, только установите их пустыми, как описано в ответе Алекса Чернышева. Чтобы получить больше контроля над MANIFEST.MF, вы не должны использовать плагин maven-archiver.

Одной из альтернатив будет использование плагина maven antrun и задачи Ant Jar для создания Jar.

В pom.xml:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <phase>package</phase>
            <configuration>
              <target>
                <jar destfile="test.jar" basedir=".">
                  <include name="build"/>
                  <manifest>
                    <attribute name="Manifest-Version:" value="1.0"/>
                  </manifest>
                </jar>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

Другой вариант - вызвать инструмент Jar напрямую, используя плагин Maven exec.

Я не люблю рекомендовать antrun, так как считаю это грязным хаком, но кажется, что maven-archiver не соответствует вашим требованиям. Возможно, стоит поднять запрос функции для maven-archiver.

РЕДАКТИРОВАТЬ: 2014-10-06 поднял Джира MSHARED-362

РЕДАКТИРОВАТЬ: 2018-06-18: обновлена ссылка на Jira и плагин Maven Exec

РЕДАКТИРОВАТЬ: 2019-01-14: исправление предназначено для maven-archiver-3.4.0

Ответ 2

Добавить

<addDefaultImplementationEntries>false</addDefaultImplementationEntries>

в раздел конфигурации maven-jar-plugin в вашем pom.xml, чтобы полностью удалить свойства по умолчанию:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
      <archive>
        <manifest>
          <addDefaultImplementationEntries>false</addDefaultImplementationEntries>
        </manifest>
      </archive>
    </configuration>
  </plugin>

чтобы настроить его (удалить только имя пользователя):

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifestEntries>
                        <Built-By></Built-By>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>

Ответ 3

Установите переменную user.name в пустую строку.

mvn -Duser.name="" package

Или, если вы используете Eclipse, добавьте -Duser.name="" к аргументам виртуальной машины конфигурации запуска Maven (Выполнить → Выполнить как → Сборка Maven... → вкладка JRE → введите -Duser.name="" в поле аргументов ВМ).