2

私はこのHibernateチュートリアルに従おうとしています:

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/tutorial.html

これは非常に簡単でわかりやすいように見えますが、最初の決定点に固執しました。チュートリアルで提案されているpom.xmlを使用するためにFile>を選択する場合、多くの種類のプロジェクトのどれを選択する必要がありますかNew Project

直感的に、私は新しいMavenプロジェクトを作成することを考えました。

  1. Maven> Maven Project[次へ]
  2. [v] Create a simple project (skip archtype selection)[次]

しかし、ステップ3では、チュートリアルのpom.xmlによって提供されるのとまったく同じ情報の入力を求められます。チュートリアルは「空白のプロジェクト」を作成し、提案されたpom.xmlを手動で追加することを目的としていると思いますか?

しかし、それはどのような種類の「空白のプロジェクト」でしょうか?

  • Java?
  • Java EE?
  • EJB?
  • JAXB?
  • JPA?
  • Maven?
  • それは重要ですか?

(申し訳ありませんが、この新しい専門用語については(まだ)あまり経験がありませんが、最終的にはそこに到達します)

更新1:実際には、Mavenプロジェクトを選択するための提案された方法(偽の情報から開始するか正しい情報から開始するかに関係なく)は機能しません:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).


Project ID: org.hibernate.tutorials:hibernate-tutorial
POM Location: C:\Users\Daniel\Workspace\First Hibernate Tutorial\pom.xml
Validation Messages:

    [0]  'dependencies.dependency.version' is missing for org.hibernate:hibernate-core:jar
    [1]  'dependencies.dependency.version' is missing for javax.servlet:servlet-api:jar
    [2]  'dependencies.dependency.version' is missing for org.slf4j:slf4j-simple:jar
    [3]  'dependencies.dependency.version' is missing for javassist:javassist:jar


Reason: Failed to validate POM for project org.hibernate.tutorials:hibernate-tutorial at C:\Users\Daniel\Workspace\First Hibernate Tutorial\pom.xml

ここで、プレーンJavaプロジェクトを作成し、それをMavenに変換して(そのチュートリアルのpom.xmlをコピーした後)うまくいくかどうかを確認します。

更新2:プレーンJavaプロジェクトを作成し、それをMavenに変換すると(そのチュートリアルのpom.xmlをコピーした後)、同じエラーが発生します。

私は何が欠けていますか?

更新3:以下の@cowlsのヒントのおかげで、Mavenの依存関係のバージョン番号が「I」が欠落していることがわかりました。「私」はそれらが欠けていたチュートリアルだからです(これはどのようなチュートリアルですか?)

いくつかの既知のバージョン番号を使用した後、例:

<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
         <version>3.5.6-Final</version>
     </dependency>

    <!-- Because this is a web app, we also have a dependency on the servlet api. -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>1.2_02</version>
    </dependency>

    <!-- Hibernate uses slf4j for logging, for our purposes here use the simple backend -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.5.10</version>
    </dependency>

    <!-- Hibernate gives you a choice of bytecode providers between cglib and javassist -->
    <dependency>
        <groupId>javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.8.0.GA</version>
    </dependency>
</dependencies>

私はその恐ろしい致命的なエラーメッセージを取り除くことができました。そのエラーメッセージの「ヒント」BTWは、間違った方向を指しているため、逆効果でした。

[INFO] Error building POM (may not be this project's POM).

今...私はまだビルドエラーが発生していますが、それほど怖くはありません:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building First Hibernate Tutorial
[INFO]    task-segment: [install]
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\Users\dben\ws-study\First Hibernate Tutorial\src\main\resources
Downloading: http://repo1.maven.org/maven2/javax/servlet/servlet-api/1.2_02/servlet-api-1.2_02.pom
[INFO] Unable to find resource 'javax.servlet:servlet-api:pom:1.2_02' in repository central (http://repo1.maven.org/maven2)
Downloading: http://repo1.maven.org/maven2/javax/servlet/servlet-api/1.2_02/servlet-api-1.2_02.jar
[INFO] Unable to find resource 'javax.servlet:servlet-api:jar:1.2_02' in repository central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

Missing:
----------
1) javax.servlet:servlet-api:jar:1.2_02

  Try downloading the file manually from the project website.

  Then, install it using the command: 
      mvn install:install-file -DgroupId=javax.servlet -DartifactId=servlet-api -Dversion=1.2_02 -Dpackaging=jar -Dfile=/path/to/file

  Alternatively, if you host your own repository you can deploy the file there: 
      mvn deploy:deploy-file -DgroupId=javax.servlet -DartifactId=servlet-api -Dversion=1.2_02 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

  Path to dependency: 
    1) org.hibernate.tutorials:hibernate-tutorial:jar:1.0.0-SNAPSHOT
    2) javax.servlet:servlet-api:jar:1.2_02

----------
1 required artifact is missing.

for artifact: 
  org.hibernate.tutorials:hibernate-tutorial:jar:1.0.0-SNAPSHOT

from the specified remote repositories:
  central (http://repo1.maven.org/maven2)

興味深いチュートリアル:Hibernateを学ぶことを期待していましたが、代わりにMavenを学んでいます。:)

更新4:javax.servletバージョンを2.4 に修正しましたが、すべて順調です。

学んだ教訓:

  1. Mavenのpom.xmlには、<version>依存関係ごとにが必要です。
  2. その<version>値は有効である必要があります。
  3. 新しいMavenプロジェクトを作成し、そのpom.xmlを完全に置き換えることは機能しますが<name>、ウィザードベースの作成プロセスでを定義する方法がないため、Workspaceの下の誤ったサブディレクトリでプロジェクトを作成します。
  4. プレーンを作成し、そのディレクトリにJava Projectを追加してpom.xmlから、パッケージエクスプローラービューを更新することをお勧めします(サブディレクトリの名前を変更する必要はありません)。
  5. このチュートリアルでは、Mavenの「標準レイアウト」を推奨していますが、宣言されたパッケージ「org.hibernate.tutorial.domain」を使用してそれを破っています。これは、期待されるパッケージ「main.java.org.hibernate.tutorial.domain」と一致しません Eclipseの修正提案に従って、パッケージの名前を「main.java.org.hibernate.tutorial.domain」に変更します。(そして、Event.javaを新しく名前が変更されたパッケージに移動します!)
  6. Hibernate構成コマンド(など)はmvn exec:java -Dexec.mainClass="org.hsqldb.Server"、pom.xmlが存在するディレクトリーから実行する必要があります。
4

1 に答える 1

2

最も簡単なのは、新しいMavenプロジェクトを作成し、maven-archetype-quickstartアーキタイプを使用することです。

これにより、基本的なMavenプロジェクトが作成され、そこから実行できるようになります。

Mavenプロジェクトは、Mavenを使用してビルドするJavaプロジェクトであるため、プロジェクトにpom.xmlファイルが表示されることに注意してください。

このpomファイルを使用すると、プロジェクトをビルドしたり、外部の依存関係を含めたりすることができます。Mavenプロジェクトをより適切に管理するためにEclipseを使用して開発している場合は、m2eプラグインを使用することをお勧めします:http://eclipse.org/m2e/

指定する各依存関係には、バージョン番号が関連付けられている必要があります。

例えば

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>3.5.6-Final</version>
    </dependency>   
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>

正しいバージョン番号を取得するには、GoogleArtifactidMavenの依存関係だけを取得します。例:Hibernate-コアMaven依存関係。

Maven中央リポジトリのリンクを探します-つまりhttp://mvnrepository.com。グーグルで見つけられない場合は、サイトで直接検索できますが、検索機能はかなり貧弱です。

Javaコードを入れ、src/main/javaリソースを入れますsrc/main/resources(xmlファイルなど)。

その後、を使用してプロジェクトをビルドできますmvn clean install

于 2012-12-17T16:42:48.423 に答える