9

私は現在、ポートレット開発に IBM Rational Application Development (IBM Eclipse ディストリビューション) を使用していますが、Maven 統合に小さな問題があります。

状況は次のとおりです。

1) IBM RAD には、ポートレットを内部から直接デプロイする機能があります (RUN/DEBUG)

この場合、私は Maven で生成された WAR をまったく使用していません。IBM RAD が自動的に WAR を作成し、それを IBM WebSphere Portal にプッシュしているように見えるからです。これはこれまでのところ大したことではありません。

2) Maven の依存関係が WebContent/WEB-INF/lib ディレクトリにコピーされない

IBM には、WebContent/WEB-INF および WebContent/META-INF という独自のディレクトリー構造があります。pom.xml を更新して新しい依存関係を含めると、これらの JARS は WebContent/WEB-INF/lib ディレクトリにコピーされないため、ポートレットを RUN/DEBUG しようとすると、それらのライブラリは含まれません。

質問:

pom.xml を更新するとすぐに、新しい JAR を WebContent/WEB-INF/lib フォルダーに自動的にコピーする方法はありますか? (もしそうなら、これはどのライフサイクルにあるべきですか?)

質問 1 に対する完全な解決策がない場合、このステップが "mvn install" コンパイル/ゴールに含まれていてもかまいません。

ant-task を使用するのではなく、独自のコピー ユーティリティ (存在する場合) を使用することをお勧めします。

Maven と IBM RAD を WebSphere Portlet 開発に統合する方法について提案がある場合は、遠慮なく回答を追加してください。

ありがとう

4

2 に答える 2

2

古い RAD プロジェクトから選んだ Maven 2 の 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>foo</groupId>
  <artifactId>fooproject</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <properties>
    <project.build.sourceEncoding>US-ASCII</project.build.sourceEncoding>
  </properties>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <resources>
      <resource>
        <directory>src</directory>
        <includes><include>**/*.properties</include></includes>
        <filtering>true</filtering>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.1</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1-beta-1</version>
        <configuration>
          <webappDirectory>${project.basedir}/WebContent</webappDirectory>
          <warSourceDirectory>${project.basedir}/WebContent</warSourceDirectory>
          <webXml>${project.basedir}/WebContent/WEB-INF/web.xml</webXml>
          <packagingIncludes>**/*.properties,**/*.jsp,**/*.jar,**/*.class,theme/**/*,images/**/*,**/*.xml,**/*.swf,**/*.tld,**/*.txt</packagingIncludes>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
            </manifest>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <!-- compile classpath -->
  </dependencies>
</project>

これは、RAD (バージョン 7.5、WAS 7 上の Portal 6.5.x を対象) によって作成されたディレクトリ構造に適用されました。これが唯一の方法ではなく、pom を改善できると確信していますが、その目的は果たしました。必要に応じて依存関係を追加します。

于 2011-01-31T11:41:34.287 に答える
1

MavenとRADを統合するのと同じ質問と問題がありました。m2e で RAD 8 を使用しており、WebSphere Portal 7 のポートレットを自動的にデプロイ/デバッグしようとしています。

まず、ゴーケムのコメントについて:

これが IBM RAD で機能するかどうかはわかりませんが、Eclipse WTP を使用すると、プロジェクトのプロパティから展開アセンブリの一部を定義できます。

これはRADで機能します。WebSphere ビルド構造に一致するようにプロジェクトのデプロイメント アセンブリをセットアップし、Maven 依存関係を WEB-INF\lib フォルダーに移動しました ([プロジェクト] -> [プロパティ] -> [デプロイメント アセンブリ] -> [追加] -> [Java ビルド パス エントリ] -> [Maven 依存関係])。

ここに画像の説明を入力

この構成により、war を正常にビルドできました。また、生成された EAR ファイルを RAD からエクスポートし、ローカル サーバーに手動で展開することができ、正常に動作します。ただし、自動デプロイおよび「サーバーで実行」オプションは、これだけでは機能しません。何らかの理由で、すべての推移的な依存関係 (portlet-api、servlet-api など) を WebSphere にデプロイするため、競合と爆発が発生します。

したがって、McDowell によって提案された pom ソリューションを試してみましたが、成功は限定的でした。テストを削除すると、RAD から正常にデプロイされましたが、テストが正しくコンパイルまたは実行されませんでした。私はテストを含めるために彼の pom に取り組んでおり、動作するようになったらここに結果を投稿します。

また、Maven と RAD を統合する「公式」の方法に関する2010 年の IBM ドキュメントへのリンクを含むこのスレッドも見つけました。私はそれに取り組んでおり、どのソリューションが私のニーズをよりよく満たしているかを確認します。繰り返しますが、機能している場合は、ここに詳細情報を投稿します。


2011 年 11 月 21 日更新

IBM は、Maven/RAD 統合に関する更新されたドキュメントを作成しました。ここで見つけることができます。私はそれを経験しましたが、それはかなりうまくいっています。スクリーンショットと、Maven、M2eclipse、および WTP に関する少しの背景を段階的に説明しています。Chuck が論文で説明しているいくつかの煩わしさはまだありますが、最終的に、私たちのチームは Maven の規則を放棄することなく、WebSphere Portal 環境で Maven を使い始めることができました。うまくいけば、他の人はそれが役に立つと思うでしょう。

于 2011-07-08T18:28:15.453 に答える