1

maven で hibernate を struts2 に統合する方法。pom.xmlに休止状態の依存関係を追加することは知っていますが、必要なjarファイルが何であるかは正確にはわかりません。hibernateのすべてのjarファイルを試してみたところ、404ページが見つかりませんというエラーが発生しました。Maven で Struts2 hibernate に必要な 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 は休止状態から独立しているため、単純な休止状態の依存関係をアプリケーションに追加するのと同じです。

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 アノテーションを使用しているプロジェクトで作業しています。この場合、pom で次の依存関係が 1 つだけ必要です。

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

hibernate 4.x を使用しているようですので、どちらを使用しているかを正確に把握する必要がありますが、pom にあまりにも多くのものが含まれていることを保証します。

別の例として。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 に答える