1

如何在maven中将hibernate集成到struts2。我知道要向 pom.xml 添加休眠依赖项,但我不知道需要哪些 jar 文件。我尝试了hibernate的所有jar文件,导致404 page not found错误。有人可以确切地告诉我 Struts2 hibernate 在 maven.an 中所需的 jar 文件是什么。一个示例将是可观的。

这是 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>org</groupId>
  <artifactId>Strurts2Hibernate</artifactId>
  <packaging>war</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>Strurts2Hibernate Maven Webapp</name>
  <url>http://maven.apache.org</url>
 <profiles>
    <profile>
        <id>default-tools.jar</id>
        <activation>
            <property>
                <name>java.vendor</name>
                <value>Sun Microsystems Inc.</value>
            </property>
        </activation>
        <dependencies>
            <dependency>
                <groupId>com.sun</groupId>
                <artifactId>tools</artifactId>
                <version>1.6.0</version>
                <scope>system</scope>
                <systemPath>C:/Program Files/Java/jdk1.6.0_21/lib/tools.jar</systemPath>
            </dependency>
        </dependencies>
    </profile>
</profiles>
 <dependencies>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.1.2</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.21</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.6.6</version>
</dependency>

<dependency>
    <groupId>antlr</groupId>
    <artifactId>antlr</artifactId>
    <version>2.7.7</version>
</dependency>


<dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>

</dependency>

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.1</version>
</dependency>

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.1</version>
</dependency>

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
</dependency>


<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging-api</artifactId>
    <version>1.1</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator-annotation-processor</artifactId>
    <version>4.3.0.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.3.0.Final</version>
    </dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.2.3.ga</version>

</dependency>

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.1.Final</version>
</dependency>


<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-convention-plugin</artifactId>
    <version>2.3.4.1</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-lang3</artifactId>
            <groupId>org.apache.commons</groupId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4</version>

</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.6.4</version>
</dependency>

<dependency>
    <groupId>asm</groupId>
    <artifactId>asm-tree</artifactId>
    <version>1.5.3</version>
</dependency>


 </dependencies>

  <build>
<finalName>Strurts2Hibernate</finalName>
<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
        </configuration>
    </plugin>
</plugins>
</build>
</project>

Web.xml

   <web-app>
<display-name>Struts 2 Web Application</display-name>

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>

Struts.xml

<struts>
  <constant name="struts.devMode" value="true" />

  <package name="myhibernate" extends="hibernate-default">

  <action name="addStudent" method="execute" class="com.in.AddStudentAction">
     <result name="success" type="redirect">
           listStudents
     </result>
  </action>

  <action name="listStudents" method="listStudents" class="com.in.AddStudentAction">
     <result name="success">/students.jsp</result>
  </action>

 </package>

 </struts> 

我谷歌它说一些 jar 冲突无法找到哪些 jar 文件....

4

2 回答 2

1

我不确定您到目前为止所做的一切,添加以下条目将为您完成大部分工作

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.x.x-Final</version>
</dependency>

Struts2 独立于 hibernate,因此它与您向应用程序添加简单的 hibernate 依赖项相同

从Maven 中央存储库下载依赖项时,有时休眠依赖项会显示一些错误,因此在这种情况下,您需要在 pom.xml 中添加以下条目

<repositories>
  <repository>
    <id>jboss-public-repository-group</id>
    <name>JBoss Public Repository Group</name>
    <url>http://repository.jboss.org/nexus/content/groups/public</url>
  </repository>
  ...
</repositories>

希望对你有帮助

于 2012-09-12T11:19:53.393 回答
0

这里最重要的是 Maven 会为你处理传递依赖。这意味着您只需选择“顶级”持久性依赖项,所有次要的东西(传递依赖项)都将由 Maven 为您拉入。许多开发人员在尝试填充他们的 POM 依赖项列表时仍然应用“我需要的所有 jar 是什么”逻辑。这是不必要且令人困惑的。您必须通过仔细阅读 Hibernate / JPA 文档来确定您自己真正需要的依赖项。

在我的例子中,我使用了一个使用 JPA Annotations 作为持久性方法的项目。在这种情况下,我们只需要 poms 中的单个跟随依赖项。

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
    </dependency>

我看到你使用的是 hibernate 4.x,所以你必须弄清楚你正在使用哪一个,但我向你保证你的 pom.xml 中有太多。

作为另一个例子。您的 slf4j 依赖项可以使用相同的清理。如果您只是声明单曲:

   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.6.4</version>
   </dependency>

Maven 将为您获取所有其他(传递)依赖项,例如 slf4j-api 和 log4j12。

于 2012-09-12T14:23:22.140 回答