20

プロジェクトのpom.xmlに次のものがあり、結果のWARファイルで使用されているMavenのバージョンを表示する必要があると思います。

<build>
...
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>false</addClasspath>
                    </manifest>
                    <manifestEntries>
                        <Build-Time>${maven.build.timestamp}</Build-Time>
                        <Build-Host>${agent.name}</Build-Host>
                        <Build-User>${user.name}</Build-User>
                        <Build-Maven>Maven ${maven.version}</Build-Maven>
                        <Build-Java>${java.version}</Build-Java>
                        <Build-OS>${os.name}</Build-OS>
                        <Build-Label>${project.version}</Build-Label>
                        <Build-Path>${basedir}</Build-Path>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
        ...
    </plugins>
...
</build>

作成されたMANIFEST.MFは正しく見えますが、この場合、$ {maven.version}が実際のバージョン番号3.0.4に置き換えられていないBuild-Maven行を除いて、以下を参照してください。

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: stocjon
Build-Jdk: 1.6.0_35
Build-Host: 
Build-Java: 1.6.0_35
Build-Label: 1.0.0-SNAPSHOT
Build-Maven: Maven ${maven.version}
Build-OS: Windows XP
Build-Path: C:\Development\project_name
Build-Time: 15:38:50 21-Sep-2012
Build-User: user_name

MavenバージョンがMANIFEST.MFに入力されていない理由はありますか?

助けていただければ幸いです。

ありがとうジョン

4

6 に答える 6

7

このプラグインを追加する必要があります:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
  <executions>
    <execution>
      <phase>validate</phase>
      <goals>
        <goal>maven-version</goal>
      </goals>
    </execution>
  </executions>
</plugin>

詳しくはこちらをご覧ください。

于 2012-09-21T15:20:23.980 に答える
7

2012年2月にコンポーネントmaven-archiver:2.5に機能(MSHARED-38 )が追加されたため、 build-helper-maven-pluginは不要になりました(リリースノート)。

そして、このコンポーネントは、maven-jar-pluginmaven-war-pluginmaven-ear-pluginなどのMavenプラグインによって使用されます。

この機能を使用するこれらのプラグインのバージョンは次のとおりです。

  • maven-jar-plugin:2.4MJAR-148)、2012年2月にリリース
  • maven-war-plugin:2.2MWAR-273)、2012年2月にリリース
  • maven-ear-plugin:2.8MEAR-145)、2012年9月にリリース
  • maven-assembly-plugin:2.4MASSEMBLY-634)、2012年11月にリリース
  • maven-ejb-plugin:2.4MEJB-56)、編集:2014年8月24日にリリース

したがって、アーカイブのマニフェスト.mfにデフォルトでこのエントリがあります。

作成者:Apache Maven $ {maven.version}

于 2014-05-19T09:57:57.140 に答える
4

完全を期すために-これは私のために働いた:

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

これは私のマニフェストに入れます-

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: Old.Curmudgeon
Build-Jdk: 1.5.0_22
Implementation-Title: JarFileName-1.0.2
Implementation-Version: 1.0.2
Implementation-Vendor-Id: our.id
于 2013-12-04T16:44:24.987 に答える
4

少なくともmaven-jarプラグインのバージョン2.4の時点で、jar内のMETA-INFのMANIFEST.MFファイルにデフォルトで次のエントリが追加されています。

 Manifest-Version: 1.0
 Archiver-Version: Plexus Archiver
 Built-By: abcUser
 Created-By: Apache Maven 3.3.3
 Build-Jdk: 1.8.0_77

プロジェクトのバージョンとその他の実装の詳細を追加するには、以下をmaven-jar-pluginに追加します(pluginManagementセクションまたはbuild->pluginsセクションのいずれかで:

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

         </archive>
     </configuration>
 </plugin>

ビルド時間のようなものを追加するには、以下を追加します。

 <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-jar-plugin</artifactId>
     <version>2.4</version>
     <configuration>
         <archive>
             <manifest>
                 <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
             </manifest>
             <manifestEntries>
                 <Build-Time>${maven.build.timestamp}</Build-Time>                            
             </manifestEntries>
         </archive>
     </configuration>
 </plugin>

<properties>ビルド時の形式は、pom.xmlのセクションにある次のプロパティを使用して変更できます。

<maven.build.timestamp.format>yyyy-MM-dd HH:mm z</maven.build.timestamp.format>

上記のすべての出力は次のようになります。

Manifest-Version: 1.0
Implementation-Title: UI
Implementation-Version: 2.0.5-SNAPSHOT
Archiver-Version: Plexus Archiver
Built-By: abcUser
Implementation-Vendor-Id: com.xyz.abc.dbe
Build-Time: 2016-12-23 12:04 UTC
Created-By: Apache Maven 3.3.3
Build-Jdk: 1.8.0_77
Implementation-Vendor: XYZ Corporation
于 2016-12-23T12:19:32.650 に答える
0

ビルドマシンを入手するために、次のプラグインを追加しました。

<plugin>
    <groupId>org.codehaus.groovy.maven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <executions>
        <execution>
            <phase>generate-resources</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source>project.properties["hostname"] = InetAddress.getLocalHost().getHostName()</source>
            </configuration>
        </execution>
    </executions>
</plugin>

次に、${hostname}を使用してホストマシン名を取得できます。

于 2012-09-21T15:52:42.433 に答える
0

それがどのように提案されているかを見てください:http jcabi-manifests//manifests.jcabi.com/versioning.html

また、詳細については、このブログ投稿を参照してください:http ://www.yegor256.com/2014/07/03/how-to-read-manifest-mf.html

于 2012-12-30T09:17:46.977 に答える