2

m2e (Maven 3.0.3 の外部バイナリに接続) で Eclipse Indigo を使用しています。

現在、私のアプリケーションの意図した構造は次のとおりです。

Company-parent
--Project-parent
----Module1
----Module2
----ModuleN

Company-parent が Project-parent のプロジェクトになり、Project-parent がすべてのモジュールの親になるように pom を設定しました。会社の親とプロジェクトの親は問題ないようです。どちらもパッケージタイプのPOMです。

3 番目のレベルでは、問題に遭遇し始めます。最も単純なモジュール プロジェクトが定義されていても、さまざまな Maven エラーやあらゆる種類の奇妙な動作が発生します。

親会社:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.scoresecret</groupId>
  <artifactId>scs-global-parent</artifactId>
  <version>1</version>
  <packaging>pom</packaging>

</project>

プロジェクトの親:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <artifactId>scs-global-parent</artifactId>
    <groupId>com.scoresecret</groupId>
    <version>1</version>
  </parent>

  <artifactId>scs-model-parent</artifactId>
  <groupId>com.scoresecret.model</groupId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <modules>
    <module>scs-model-core</module>
  </modules>

</project>

モジュールポン:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <artifactId>scs-model-parent</artifactId>
    <groupId>com.scoresecret.model</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <artifactId>scs-model-core</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>jar</packaging>

「Maven -> Update Project Configuration」を実行すると、次のエラーが発生するため、実行できません。

Failure to find org.apache.maven.plugins:maven-resources-plugin:pom:2.4.3 in https://my.archiva.location/archiva/repository/internal was cached in the local repository, resolution will not be reattempted until the update interval of scs.internal has elapsed or updates are forced pom.xml /scs-model-core line 1  Maven Configuration Problem

私が受け取っている他のいくつかのエラー:

Could not calculate build plan: Plugin org.apache.maven.plugins:maven-resources-plugin:2.4.3 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.4.3 pom.xml /scs-model-core line 1  Maven Build Problem

また、モジュール内の (会社レベルの pom からの) プラグインの目標の 1 つを無視する m2e に関するエラーを受け取ります。ここで明らかな何かが欠けていますか?ヘルプ!

ありがとう :)

4

4 に答える 4

3

ディレクトリ構造で説明したようにアーティファクトを配置しないでください。

+-- Company-parent (pom.xml)
      +-- Project-parent (pom.xml)
            +----Module1 (pom.xml)
            +----Module2 (pom.xml)
            +----ModuleN (pom.xml)

親会社(pom.xml)を実際に有効に活用するには、バージョン管理の別の領域に格納し、リポジトリマネージャー(nexus、artifactary、archiva ...)で個別にリリースする必要があります。これにより、次の構造になります。

+-- Company-parent (pom.xml) (Separate Project)

会社の親は、release-pluginを介して必要な頻度でリリースする必要があります。会社の親のバージョン1.0をリリースしたとしましょう。それを分離する理由は、会社の親が単一のプロジェクトだけでなく多くのプロジェクトで使用されているためです。

実際のプロジェクトは別のフォルダーに配置する必要があります(バージョン管理にもあります)。

+-- Project-parent (pom.xml)
     +----Module1 (pom.xml)
     +----Module2 (pom.xml)
     +----ModuleN (pom.xml)

したがって、プロジェクトで会社の親を使用するには、プロジェクトの親は次のようになっている必要があります。

<project....>
 <modelVersion>4.0...</modelVersion>

<parent>
  <artifactId>company-parent</artifactId>
  <groupId>com.company.base</groupId>
  <version>1.0</version>
</parent>

<packaging>pom</packaging>

<groupId>com.company.project1</groupId>
<artifactId>project-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
...
<dependencyManagement>
 <!-- Project specific dependencies -->
</dependencyManagement>
<build>
  <pluginManagement>
    <plugins>
      <!-- Project specific plugins. Better use them of the company pom -->
    </plugins>
  </pluginManagement>
</build>
<modules>
  <module>module1</module>
  <module>module2</module>
  <module>moduleN</module>
</modules>
..

次に、次のようなモジュールを見てみましょう。

<project....>
 <modelVersion>4.0...</modelVersion>

<parent>
  <artifactId>project-parent</artifactId>
  <groupId>com.company.project1</groupId>
  <version>1.0.0-SNAPSHOT</version>
</parent>

<packaging>jar</packaging>

<artifactId>module1</artifactId>

<dependencies>...</dependencies>
<build>..</build>
于 2012-03-26T16:05:59.013 に答える
0

私のローカルリポジトリには、拡張子「.lastUpdated」で終わるファイルが含まれていたことが判明しました...これは、mavenパスワードを暗号化しようとしたときに認証に問題があったため、依存関係をダウンロードしていなかったためです。これらのファイルを削除し、「Maven > Update Dependencies」を実行しただけで問題なく動作し、アーティファクト リポジトリから不足しているリソースをダウンロードしました。

于 2012-03-25T14:36:33.453 に答える
0

親 pom を明示的なパスで参照する必要があります。

<parent>
  <artifactId>scs-model-parent</artifactId>
  <groupId>com.scoresecret.model</groupId>
  <version>1.0-SNAPSHOT</version>
  <relativePath>../pom.xml</relateivePath>
</parent>

それ以外の場合は、変更するたびに親 pom をリポジトリに再インストールする必要があります。

于 2012-03-24T21:48:51.457 に答える
0

Maven がリポジトリhttps://my.archiva.location/archiva/repository/internalからプラグイン (org.apache.maven.plugins:maven-resources-plugin:pom:2.4.3) をダウンロードできないようです。

https://my.archiva.location/archiva/repository/internalで org.apache.maven.plugins:maven-resources-plugin:pom:2.4.3が見つからない場合は、ローカル リポジトリにキャッシュされました。解決は再試行されません。 scs.internal の更新間隔が経過するか更新が強制されるまで pom.xml /scs-model-core 行 1 Maven 構成の問題

ブラウザでこの URL を参照すると、存在しますか? https を使用しているようです。この URL にアクセスするには、クライアント証明書または何らかの形式の基本認証資格情報が必要ですか?

リポジトリの .m2/settings.xml ショーの現在の設定は何ですか? 会社のファイアウォールの背後にいますか、それともインターネットに接続していないため、非標準の Maven 中央リポジトリに接続する必要がありますか?

于 2012-03-24T21:57:05.333 に答える