0

「ApacheMaven3Cookbook」を購入し、Mavenプロジェクトに依存関係を追加する方法を学ぼうとしています。

私のメインプロジェクトpom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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>net.srirangan.packt.maven</groupId>
<artifactId>TestModularApp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

<name>TestModularApp</name>
<url>http://maven.apache.org</url>
  
<properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.2</version>
</dependency>
</dependencies>
<modules>
<module>ChildProject</module>
<module>MyWebApp</module>
</modules>
</project>

ここでわかるように、これは親プロジェクトであるため、このプロジェクトのパッケージは「pom」に設定されています。(私が知っているのはそれだけです:))

次に、次のpom.xmlを使用してサブプロジェクトを作成しました。

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>net.srirangan.packt.maven</groupId>
    <artifactId>TestModularApp</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <groupId>com.xpogames.childproject</groupId>
  <artifactId>ChildProject</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>ChildProject</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    </dependency>
  </dependencies>
</project>

ここでわかるように、親プロジェクトからバージョンを継承することになっているため、mysql-connect-java依存関係にバージョンプロパティを追加しませんでした。しかし、何らかの理由で、そうではありません。

そのプロジェクトでmvncompileを実行すると、dependencies.dependency.versionプロパティが欠落しているというエラーが発生します。

私が間違っていることについて何か考えはありますか?サブプロジェクトでもバージョンを指定する必要がないという問題を解決するにはどうすればよいですか?

ありがとう!

アップデート

Peter Lawreyの回答を見て、彼が提供したURLの例を見た後、メインのXMLに。の<dependencyManagement>周りのプロパティがないことに気づきました<dependencies>。そのプロパティを追加すると、サブプロジェクトでバージョン番号を指定する必要がなくなりました。

ピーターの答えは、この目標を達成するための別の方法を示しています。

すべてに感謝します!

クフィル

4

1 に答える 1

3

親pomのdependencyManagementセクションの依存関係からバージョンを継承し、これらを子pomに選択的に含めます。

あなたの場合、依存関係はすでに親から含まれているので、再度言及する必要はありません。(JUnitの場合と同様)

ところで:私はJUnit 4.10を使用していますが、下位互換性の問題は見つかりませんでした。

于 2012-08-02T08:53:15.977 に答える