簡體   English   中英

Maven不會在WEB-INF / lib文件夾中復制spring jars

[英]Maven does not copy spring jars in WEB-INF/lib folder

我有一個多模塊maven項目: parent-proj ,它有兩個子模塊: child-dao-projchild-web-proj child-dao-proj是一個Maven Java項目,而child-web-proj是一個Web項目。 在pom父項目中,我聲明了兩者都需要的所有必需依賴項:

 <modelVersion>4.0.0</modelVersion>
<groupId>fr.myproject</groupId>
<artifactId>parent-proj</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
    <module>child-dao-proj</module>
    <module>child-web-proj</module>
</modules>
<packaging>pom</packaging>

 <dependencyManagement>
    <dependencies>
        <!--Spring dependencies-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>${spring.data.jpa}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
            <version>1.8.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Hibernate Jars -->
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.0-api</artifactId>
            <version>1.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0.2</version>
        </dependency>


        <!-- Mysql connector-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.31</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.180</version>
        </dependency>

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.0.0.GA</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- Test dependencies-->
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-all</artifactId>
            <version>1.3</version>
        </dependency>
    </dependencies>
</dependencyManagement>

我將所有必需的持久性jar(休眠,spring-orm,spring-data等)的依賴項放在child-dao-proj並將所有web jar(spring-mvc,spring-web等)放入child-web-proj

當我運行mvn clean install並在Tomcat中部署Web項目時,遇到以下錯誤: java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener

搜索后,似乎彈簧罐未復制到WEB-INF/lib目錄中。

有人知道我該如何解決這個問題?

[編輯]這是Web項目的pom:

<parent>
    <artifactId>parent-proj</artifactId>
    <groupId>fr.myproject</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>child-web-proj</artifactId>
<packaging>war</packaging>



<dependencies>
    <dependency>
        <groupId>fr.myproject.dao</groupId>
        <artifactId>child-dao-proj</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

我忘了提到我正在與Intellij合作。

[編輯]這是mvn dependency:tree的輸出:

[INFO] ------------------------------------------------------------------------
[INFO] Building child-web-proj Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ child-web-proj ---
[INFO] fr.myproject:child-web-proj:war:1.0-SNAPSHOT
[INFO] +- fr.myproject:child-dao-proj:jar:1.0-SNAPSHOT:compile
[INFO] |  +- org.springframework:spring-orm:jar:4.0.6.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-jdbc:jar:4.0.6.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-tx:jar:4.0.6.RELEASE:compile
[INFO] |  +- org.springframework.data:spring-data-jpa:jar:1.6.1.RELEASE:compile
[INFO] |  |  +- org.aspectj:aspectjrt:jar:1.8.0:compile
[INFO] |  |  +- org.slf4j:slf4j-api:jar:1.7.7:compile
[INFO] |  |  \- org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime
[INFO] |  +- org.springframework.data:spring-data-commons:jar:1.8.1.RELEASE:compile
[INFO] |  +- org.hibernate:hibernate-entitymanager:jar:4.3.6.Final:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile
[INFO] |  |  +- org.hibernate:hibernate-core:jar:4.3.6.Final:compile
[INFO] |  |  |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  |  |  \- org.jboss:jandex:jar:1.1.0.Final:compile
[INFO] |  |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |  |  |  \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] |  |  +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.5.Final:compile
[INFO] |  |  +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] |  |  +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.0.Final:compile
[INFO] |  |  \- org.javassist:javassist:jar:3.18.1-GA:compile
[INFO] |  +- javax.persistence:persistence-api:jar:1.0.2:compile
[INFO] |  +- mysql:mysql-connector-java:jar:5.1.31:compile
[INFO] |  \- javax.validation:validation-api:jar:1.0.0.GA:compile
[INFO] +- org.springframework:spring-web:jar:4.0.6.RELEASE:compile
[INFO] |  +- org.springframework:spring-aop:jar:4.0.6.RELEASE:compile
[INFO] |  |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  +- org.springframework:spring-beans:jar:4.0.6.RELEASE:compile
[INFO] |  +- org.springframework:spring-context:jar:4.0.6.RELEASE:compile
[INFO] |  \- org.springframework:spring-core:jar:4.0.6.RELEASE:compile
[INFO] |     \- commons-logging:commons-logging:jar:1.1.3:compile
[INFO] +- org.springframework:spring-webmvc:jar:4.0.6.RELEASE:compile
[INFO] |  \- org.springframework:spring-expression:jar:4.0.6.RELEASE:compile
[INFO] +- org.springframework:spring-test:jar:4.0.6.RELEASE:compile
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided
[INFO] +- junit:junit:jar:4.11:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- com.h2database:h2:jar:1.4.180:test
[INFO] \- org.assertj:assertj-core:jar:1.6.1:test
[INFO] ------------------------------------------------------------------------

這是處理您的情況的正確方法:

您可以在您的父部分的dependencyManagement中導入spring-framework-bom,以確保所有spring依賴項處於相同版本。

    <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>4.1.0.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在您的戰爭項目中,您可以通過以下方式聲明依賴關系:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>
<dependencies>

這樣,您可以避免對每個彈簧模塊重復使用彈簧版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM