Maven模块作为Web应用程序的依赖

时间:2010-12-01 02:30:46

标签: java module maven

我的项目,服务器,客户端和核心都有树模块。核心模块应作为jar依赖项导入其他模块。 在eclipse上我看不到任何警告,但如果我正在启动应用程序,我会收到以下错误:

Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [at.ac.tuwien.inso.verteilte.service.HelloServiceImpl] for bean with name 'helloServiceImpl' defined in ServletContext resource [/WEB-INF/appContext.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: at/ac/tuwien/inso/verteilte/services/IHelloService

Caused by: java.lang.ClassNotFoundException: at.ac.tuwien.inso.verteilte.services.IHelloService

此接口导入HelloServiceImpl。 HelloServiceImpl在bean上创建如下:

<jaxws:endpoint id="helloService" implementorClass="at.ac.tuwien.inso.verteilte.service.HelloServiceImpl">

由于stackoverflow的链接保护,我删除了名称空间:) 顺便说一句,我的pom.xml是:

for core:

<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>verteiltepaxen-parent</artifactId>
        <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
    <artifactId>core</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>core</name>
    <packaging>jar</packaging>
    <description>Verteilte Praxen - core</description>
    <build>
        <finalName>core-1.0-SNAPSHOT</finalName>
    </build>
</project>

服务器:

<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>verteiltepaxen-parent</artifactId>
        <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
    <artifactId>server</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>server</name>
    <description>Verteilte Praxen - Server</description>
    <dependencies>
        <dependency>
            <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
            <artifactId>core</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>jar</type>
            <scope>compile</scope>
            <exclusions>
                <exclusion>
                    <artifactId>core</artifactId>
                    <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
        </dependencies>
    </dependencyManagement>
    <build>
        <finalName>server-1.0-SNAPSHOT</finalName>
    </build>
</project>

客户:

<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>verteiltepaxen-parent</artifactId>
        <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
    <artifactId>client</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>client</name>
    <description>Verteilte Praxen - Client</description>
    <dependencies>
        <dependency>
            <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
            <artifactId>core</artifactId>
            <version>1.0-SNAPSHOT</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
        </dependencies>
    </dependencyManagement>
    <build>
        <finalName>client-1.0-SNAPSHOT</finalName>
    </build>
</project>

父母pom:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
    <artifactId>verteiltepaxen-parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>verteiltepaxen Maven Webapp</name>
    <properties>
        <cxf.version>2.2.3</cxf.version>
        <spring.version>2.5.6.SEC02</spring.version>
    </properties>
    <dependencies>
        ... other dependencies ...
    </dependencies>
    <repositories>
        ... Repositories ...
    </repositories>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.8</version>
                <configuration>
                    <projectNameTemplate>verteiltepaxen-parent-1.0-SNAPSHOT</projectNameTemplate>
                    <wtpmanifest>true</wtpmanifest>
                    <wtpapplicationxml>true</wtpapplicationxml>
                    <wtpversion>2.0</wtpversion>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.8</version>
                <configuration>
                    <!-- Configure the webapp -->
                    <contextPath>/verteiltepaxen</contextPath>
                </configuration>
            </plugin>
        </plugins>
        <finalName>verteiltepaxen-parent-1.0SNAPSHOT</finalName>
    </build>
    <modules>
        <module>client</module>
        <module>server</module>
        <module>core</module>
    </modules>
</project>

非常感谢你的帮助:)


感谢您的帮助,我删除了它,但错误是相同的

<dependencies>
    <dependency>
        <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
        <artifactId>core</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
</dependencies>

2 个答案:

答案 0 :(得分:0)

我不确定这实际上会做什么,但在服务器的POM中,您将核心列为依赖项,然后将其排除在外:

<dependency>
    <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
    <artifactId>core</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>jar</type>
    <scope>compile</scope>
    <exclusions>
        <exclusion>
            <artifactId>core</artifactId>
            <groupId>at.ac.inso.tuwien.verteiltepraxen</groupId>
        </exclusion>
    </exclusions>
</dependency>

你为什么要这样做?排除用于告诉Maven忽略构建中其他依赖项拖入的某些依赖项。尝试删除排除项。

答案 1 :(得分:0)

您可能只需要父目录中的mvn clean install来获取新的war文件。否则,澄清你的意思“如果我正在启动应用程序”:使用maven jetty插件?部署到Tomcat?还有别的吗?