`
墨香子
  • 浏览: 47101 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用maven时遇到的一个问题

阅读更多
    学习maven时,尝试将javaee项目分成两个模块,总项目为server-side,其下面有两个子模块:web-lib和web-apps,其中web-lib只是保存所有的依赖的并没有任何的代码逻辑,web-apps才是真正的web项目。另外web-lib和web-apps均继承自server-side,web-apps依赖web-lib。其pom文件如下:

server-side 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>zwh.ssh.maven</groupId>
    <artifactId>server-side</artifactId>
    <packaging>pom</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>server-side Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <build>
        <finalName>server-side</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <modules>
        <module>web-lib</module>
        <module>web-apps</module>
    </modules>
</project>


web-lib pom.xml
<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>zwh.ssh.maven</groupId>
        <artifactId>server-side</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>web-lib</artifactId>
    <packaging>jar</packaging>
    <name>web-lib Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
    <!-- 这里定义了很多依赖,与前面的文章基本相同,这里就省略了 -->
               
    </dependencies>
    <build>
        <finalName>web-lib</finalName>
    </build>
</project>


web-apps pom.xml
<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>zwh.ssh.maven</groupId>
        <artifactId>server-side</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>web-apps</artifactId>
    <packaging>war</packaging>
    <name>web-apps Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>zwh.ssh.maven</groupId>
            <artifactId>web-lib</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>web-apps</finalName>
        <plugins>
            <!-- jetty是一个servlet容器,类似于tomcat,配置该plugin之后,可以在项目中
调用mvn jetty:run-war直接运行这个web项目,默认端口是8080。plugin如果不添加version会报出WARNING -->
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.26</version>
            </plugin>
        </plugins>
    </build>
</project>


下面说一下今天遇到的问题,原来的项目是一个ssh项目,各种配置实用的xml文件,我今天想尝试实用annotation的方法配置,那么首先我就需要把hibernate-annotataions添加到项目中,前面也说了我的web-lib项目是用来保存所有的依赖的maven项目,所有就将该依赖添加到web-lib的pom项目下了,然后更改相关代码。然后运行我的web-apps项目,就出现错误了。报出找不到类的错误
Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity

然后整个一下午都在纠结这个问题,搜索了各种相关错误,各种百度谷歌,说是缺少一些jar包,但这些这些jar都在我项目里啊,可以通过eclipse看到这些依赖包的,怎么添加都报错,我将生成的web项目展开,发现hibernate-annotations及其的所有依赖包根据就没有添加在项目下,然后又各种头脑风暴,最后突然灵光一闪,我应该将整个项目install一下。然后就在server-sides上运行了mvn install方法,再次运行我的项目,终于不再出现错误了。

后来仔细想了想出错的原因,我的web-apps是依赖于web-lib的,然而maven依赖必须通过本地仓库或远程仓库才能找到依赖,我修改了web-lib项目的依赖但我的本地仓库仍是一样安装的web-lib项目,所以新添加的依赖会找不到。

经过一下午的折磨,得出一个教训,对于分模块的maven项目,修改了项目的依赖等操作时一定要将这个项目install一下
分享到:
评论

相关推荐

    Intellij IDEA中使用maven filter遇到的问题

    在IntelliJ IDEA中使用Maven Filter功能时,开发者可能会遇到一些挑战,这些挑战主要涉及到配置、资源过滤以及与项目构建的交互。首先,我们来深入理解Maven Filter及其在IntelliJ IDEA中的应用。 Maven Filter是...

    maven项目搭建可能遇到的问题

    通过上述步骤,可以有效地解决在使用Maven搭建项目时遇到的关于源文件识别和Servlet类依赖的问题。值得注意的是,除了这些具体的技术步骤外,还应该注重项目的整体规划和配置的一致性,避免因为配置冲突而导致的问题...

    Maven包和遇到的问题总结

    2. **创建Maven项目**: 安装插件后,可以选择"File" -&gt; "New" -&gt; "Other" -&gt; "Maven Project"来创建一个新的Maven项目。在创建过程中,需要选择对应的Maven archetype(模板)。 3. **配置Maven首选项**: 在Eclipse...

    eclipse安装maven插件,处理无Maven Pom editor打开方式问题

    Maven Pom Editor是Eclipse中的一个插件,用于编辑和验证pom.xml文件,提供代码提示、错误检查和自动修复等功能,提高了开发效率。 2. **安装Maven**: 在开始安装Eclipse的Maven插件前,首先确保你的系统已经安装...

    MAVEN+JENKINS使用教程

    本文档旨在为读者提供一个系统的MAVEN+JENKINS使用教程,涵盖了MAVEN的基础知识、MYECLIPSE配置、MYECLIPSE运行MAVEN项目、加入依赖、命令行打包等方面的内容。 一、关于MAVEN MAVEN是一款基于项目对象模型(POM)...

    在eclipse中使用maven(1).zip

    在Eclipse中使用Maven是Java开发者日常工作中的一项重要技能,Maven是一个强大的项目管理和构建工具,它简化了项目的依赖管理、构建流程以及版本控制。本教程将详细讲解如何在Eclipse环境中配置和使用Maven。 1. **...

    Maven使用.pdf

    Maven能够解析并自动管理这些依赖关系,当引入一个新的库时,Maven会自动引入该库所依赖的其他库,极大地简化了项目依赖管理的工作。 3. **获取和维护第三方jar包**:在没有Maven的情况下,寻找并下载所需的第三方...

    Maven很Maven仓库

    Maven是一个在Java开发中广泛使用的项目管理和综合工具,它通过一个声明式的配置来管理项目的构建、报告和文档。Maven仓库则是Maven系统中的一个重要组成部分,它存储了各种依赖库,如JAR文件,使得开发者可以轻松地...

    解决更新Maven项目遇到了问题

    - **描述**:“无法计算建设计划:插件org.apache.maven.plugins:maven-resources-plugin:2.6或它的一个依赖无法解决”。 - **具体错误**:“故障转移的组织。ApacheMaven插件。插件:Maven资源:罐:2.6形式...

    Storm编程实践(安装Maven-使用Maven编译运行代码-mvn 打包)

    Maven 是一个基于项目对象模型(POM)的项目管理工具,能够帮助开发者更好地管理项目的依赖关系和编译过程。在本实验中,我们首先需要安装 Maven。在安装 Maven 之前,我们需要确保我们的实验环境已经配置好了 Linux...

    Maven的简单使用

    - **Maven坐标**:Maven使用坐标来唯一标识一个构件(如JAR文件)。一个完整的坐标包括GroupId、ArtifactId和Version三个部分。 ### MyEclipse集成Maven及配置 #### MyEclipse集成Maven插件 MyEclipse自带了Maven...

    Eclipse使用Maven无法建web项目

    在Eclipse中创建Maven Web项目时,可能会遇到诸如Maven插件未安装、 archetype配置错误或者网络问题导致的下载失败等常见问题。解决这些问题通常需要确保Eclipse已经安装了Maven插件(M2Eclipse),并正确配置了...

    maven教程-maven教程-maven教程

    依赖管理方面,Maven采用坐标系统来唯一标识一个项目依赖,开发者只需要指定依赖的groupId、artifactId和version,Maven便能自动解析并下载依赖。多模块项目是指一个项目被分为多个子模块,可以分别进行构建,而继承...

    使用maven构建springMVC项目

    - **MyEclipse与Maven的兼容性问题**:文章提到使用MyEclipse构建Maven项目可能会遇到一些问题,比如资源文件没有被正确发布到Tomcat服务器,这可能是由于MyEclipse对Maven的支持不够完善所致。 #### 标签解析与...

    ​实现maven项目中多版本依赖兼容使用解决方案

    然而,当项目引入多个库时,可能会遇到依赖冲突的问题。依赖冲突通常发生在两个或更多库使用相同类的不同版本时,Maven默认会选择最高版本的依赖,但这可能导致运行时错误或不兼容性。在本案例中,公司需要使用一个...

    使用Nexus搭建Maven私服

    在实际的企业开发中经常会遇到的问题:在进行Maven项目开发时,所需要的构件都是通过Maven的中央仓库或者第三方的Maven仓库下载到本地,那么企业内部开发使用也会遇到一些问题,团队内的每个使用者都需要去下载相应...

    Maven使用教程

    - 中央仓库是Maven内置的一个远程仓库,位于`http://repo1.maven.org/maven2/`。它是面向全球开发者的服务,包含了大量常用的开源库文件,是Maven项目最常用的远程仓库之一。 通过上述内容的介绍,我们可以看到...

    官方下载maven-3.5.4

    对于开发者来说,选择官方发布的稳定版本,如 Maven 3.5.4,可以避免因为使用早期或者不稳定版本而遇到的问题。 ** Maven 的组成 ** 在提供的压缩包文件中,我们可以看到以下几个关键文件和目录: 1. **LICENSE**...

    maven3.5.4打包文件

    2. **创建项目**:使用 `mvn archetype:generate` 命令创建一个新的 Maven 项目。 3. **编辑 POM.xml**:根据项目需求修改 POM 文件,添加依赖、插件和构建配置。 4. **执行构建**:通过命令如 `mvn clean compile` ...

    maven搭建工程问题集锦

    在使用Maven搭建工程项目时,新手可能会遇到各种各样的问题。本文将针对一些常见的问题进行详细的解答,并提供相应的解决方案,帮助大家顺利搭建Maven项目。 #### 一、问题1: Cannot change version of project ...

Global site tag (gtag.js) - Google Analytics