eclipse - Hibernate 教程的新项目是什么类型?

标签 eclipse hibernate maven

我正在尝试遵循这个 Hibernate 教程:

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

这看起来非常简单明了,但我陷入了第一个决策点:选择 File 时> New Project使用教程的建议 pom.xml我应该选择众多类型的项目中的哪一个

直觉上,我想到创建一个新的 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 提示,我发现“I”缺少 Maven 依赖项的版本号。 “我”因为这是缺少它们的教程(这是什么样的教程?)

一旦我使用了一些已知的版本号,例如:

<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>

我已经能够摆脱那个可怕的 fatal error 消息。顺便说一句,该错误消息的“提示”适得其反,因为它指向错误的方向:

[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 就可以了,但它仍然会在 Workspace 下使用不正确的子目录创建它,因为无法定义 <name>在基于向导的创建过程中。
  4. 创建一个普通的 Java Project ,然后添加 pom.xml到其目录,然后刷新 Package Explorer View 是推荐的方法(无需重命名子目录)。
  5. 该教程推荐 Maven 的“标准布局”,但随后通过使用声明的包“org.hibernate.tutorial.domain”来破坏它,该包与预期的包“main.java.org.hibernate.tutorial.domain”不匹配。 ..采纳 Eclipse 的修复建议,将包重命名为“main.java.org.hibernate.tutorial.domain”。 (并将 Event.java 移动到新重命名的包中!)
  6. Hibernate configuration command (mvn exec:java -Dexec.mainClass="org.hsqldb.Server"等)必须从pom.xml所在的目录运行。

最佳答案

最简单的方法是创建一个新的 Maven 项目并使用 maven-archetype-quickstart 原型(prototype)。

这将创建一个基本的 Maven 项目,您应该可以从那里开始。

请注意,maven 项目只是一个使用 Maven 构建的 Java 项目,因此您将在项目中看到一个 pom.xml 文件。

使用此 pom 文件,您可以构建项目,包括外部依赖项等等。如果您使用 eclipse 进行开发,我建议使用 m2e 插件来帮助您更好地管理 Maven 项目: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>

要获取正确的版本号,只需谷歌artifactid maven依赖即可。例如。 hibernate-core maven 依赖项。

查找 Maven 中央存储库的链接 - 即 http://mvnrepository.com 。如果你在Google上找不到它,你可以直接在网站上搜索,但我发现它的搜索功能很差。

将 Java 代码放入 src/main/java 中,将资源放入 src/main/resources 中(例如 xml 文件等)。

然后您可以使用 mvn clean install 构建项目

关于eclipse - Hibernate 教程的新项目是什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918204/

相关文章:

Maven 排除在父 pom 中定义的插件

java - Eclipse 术语中的部分站点是什么?

Maven:从属性文件中设置 pom.xml 中的属性

java - Eclipse 中的 SVN 项目,带有棕色部分

hibernate - JPA 条件 API 查询子类属性

java - 如何使用hibernate在HQL中使用子查询

hibernate 连接表与其他审计表

java - 什么是 Maven 存储库网站中的托管依赖项?

java - 为什么我在 index.jsp 上看到一个红叉?

java - macOS 上的 Eclipse 安装