1

私はMaven Eclipseプラグインを使用してwtpプロジェクトを生成しています。ほとんどの場合は機能しますが、取り除きたい奇妙な癖がいくつかあります。

  • -Dwtpversion=2.0を実行するたびに指定する必要がありますmvn eclipse:eclipse。それ以外の場合、ファセット情報は生成されません。
  • Java ファセット レベルが 6.0 ではなくバージョン 1.4 に設定されているため、生成された各プロジェクトでエラーが発生します。Java compiler level does not match the version of the installed Java project facet

これらの癖を取り除くにはどうすればよいですか?

以下は、私のトップレベルの pom.xml です。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example.foo</groupId>
  <artifactId>foo</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>foo</name>
  <url>http://maven.apache.org</url>
  <modules>
    <module>module1</module>
    <module>module2</module>
  </modules>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <version>2.8</version>
        <configuration>
          <wtpversion>2.0</wtpversion>
          <additionalProjectFacets>
            <jst.web>3.0</jst.web>
          </additionalProjectFacets>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
4

3 に答える 3

2

同じ問題がありました。<plugin-management>宣言でコンパイラプラグインのソースとターゲットのバージョンを期待されるバージョンに設定することで修正しました。

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

プラグイン構成の代わりにユーザー プロパティを使用しても、Eclipse プラグインは 1.4 Java ファセットを生成することに注意してmaven.compiler.targetくださいmaven.compiler.souce

于 2014-08-15T08:37:03.207 に答える
1

あなたは何か間違ったことをします。maven-eclipse-plugin (廃止されたか、少なくとももう開発されていません) を使用するか、m2eclipse を使用できます。両方ではありません。m2eclipse を使用しますが、m2eclipse エクストラもインストールしたことを確認してください。いくつかの奇妙な理由により、これらは 1 つだけでなく 2 つの更新サイトです。エクストラを正常にインストールし、標準の Web または ejb アーティファクトを使用すると、m2eclipse のプロジェクト作成ウィザードを使用すると、m2eclipse エクストラによって Eclipse 構成が自動的にレンダリングされます。

更新: 申し訳ありませんが、Maven Eclipse プラグインはまだ有効です。問題追跡システムを調べました。

初め

一見すると、私には手がかりがありません。ソースコードは、それが単純な mojo パラメータであることを示しています (構成タグから取得できます)。考慮できる唯一のことは、構成がPOM内で共有されていることです(私の経験によると)。したがって、POM の上部でプラグインを使用し、下部でも使用する場合、構成は共有されます (または同じ)。これはおそらく 2 つの要約です (ソースで確認する必要があります)。そのため、wtpversion は、POM 内の別の場所、または親 POMsで定義されている可能性があります。この定義は、環境エントリによってのみオーバーライドできます。Mavenドキュメントからの引用:

ビルド時に Mojo のこのパラメーターに注入される値を計算するために使用される式を指定します。default-value で指定される式は、通常、${project.resources} などの POM 内の特定の要素を参照するために使用されます。これは、結果の JAR ファイル内のクラスに付随するリソースのリストを参照します。もちろん、デフォルト値は式である必要はなく、true や 1.5 などの単純な定数にすることもできます。また、String 型のパラメーターの場合、${project.artifactId}-${project.version}-special などの式をリテラル値と組み合わせることができます。式で指定されたシステム プロパティにより、ユーザーはコマンド ラインから -DaSystemProperty=value を介してデフォルト値をオーバーライドできます。注: デフォルト値も式も指定されていない場合、このパラメーターは、POM からのみ構成できます。評価される可能性のある実際の式を区切るには、'${' と '}' を使用する必要があります。

...

子によって継承される親 POM の要素は次のとおりです。

  • 依存関係
  • 開発者と貢献者
  • プラグインリスト
  • レポート リスト
  • ID が一致するプラグインの実行
  • プラグイン構成

2番

2 番目については、追加ファセットで jst.java ファセット バージョンを指定する必要があると思います。このように:この POM で:

<additionalProjectFacets>
    <jst.java>5.0</jst.java>
    <jst.ejb>3.0</jst.ejb>
    <jpt.jpa>1.0</jpt.jpa>
</additionalProjectFacets>

提案

M2eclipse には独自の問題があります。一方、Eclipse があるからといって、POM をハックする必要はありません。したがって、必要に応じて、maven eclipse プラグインの代わりに m2ecipse + extras を使用する必要があります。

于 2010-11-30T09:07:32.613 に答える
0

jst.web バージョンの場合、Maven Eclipse プラグインはプロジェクトの依存関係を考慮に入れます。サーブレット API の依存関係が定義されている場合:

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>servlet-api</artifactId>
    <version>6.0.32</version>
</dependency> 

jst.web パラメータは 6.0 になります

<faceted-project>
  ...
  <installed facet="jst.web" version="6.0"/>
  ...
</faceted-project>
于 2011-05-10T20:49:48.483 に答える