3

EARでEJBを構築しようとしています。私のEJBはSNAPSHOTSに依存しています。したがって、EARを構築すると、構造は次のようになります。

my-ear-1.0.0-SNAPSHOT.ear
 + META-INF  
  - application.xml
  - MANIFEST.MF
 - my-ejb-1.0.0-SNAPSHOT.jar
 - third-party-lib-1.0.0-SNAPSHOT.jar

ただし、maven-ejb-pluginを使用してMANIFEST.MFを生成する場合:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-ejb-plugin</artifactId>
  <version>2.3</version>
  <configuration>
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
      </manifest>
    </archive>
  </configuration>
</plugin>

私が抱えている問題は、MANIFEST.MFがスナップショットをNexusでの表示方法としてリストしていることです。これは、耳を構築するときにmaven-ear-pluginが名前を付けた方法ではありません。

Manifest-Version: 1.0
Build-Jdk: 1.6.0_25
Class-Path: third-party-lib-1.0.0-20121026.140152-21.jar

もちろん、EJBのクラスパスが存在しないjarファイルを探しているため、 ClassNotFoundExceptionが発生します。

基本的に私はどちらかを知る必要があります:

  1. -SNAPSHOT形式を使用せずに、maven-ear-pluginでjarファイルを耳に取り込むにはどうすればよいですか?
  2. maven-ejb-pluginでMANIFEST.MFの-SNAPSHOT形式を使用するにはどうすればよいですか?
4

2 に答える 2

10

Maven Archiver-HandlingSnapshotsのMavenArchiverのドキュメントを調べて、問題の解決策を見つけました。

「一意のバージョン」を使用しないように、maven-ejb-pluginを構成する必要がありました。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ejb-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>                           
                        <useUniqueVersions>false</useUniqueVersions>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

次回はRTFMを近づけると思います:)

于 2012-10-26T16:53:27.433 に答える
0

Mavenバージョン3.6.2を使用します。

以下のmaven-ear-pluginの構成で問題が解決しました。

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-ear-plugin</artifactId>
      <version>3.0.1</version>
      <configuration>
        <outputFileNameMapping>@{artifactId}@-@{baseVersion}@@{dashClassifier?}@.@{extension}@</outputFileNameMapping>
        <generateApplicationXml>true</generateApplicationXml>
        <version>7</version>
      </configuration>
    </plugin>

必要に応じて、の形式を変更することもできますが、このタイムスタンプの問題を解決するためにoutputFileNameMapping使用します。baseVersion

于 2020-05-28T08:11:03.110 に答える