`
jaesonchen
  • 浏览: 311317 次
  • 来自: ...
社区版块
存档分类
最新评论

Maven-关于compile/install和local repository的理解

 
阅读更多

背景说明:

工作的项目是一个多模块Maven工程,平时增量时需要使用命令对关联的模块进行编译,初步检查代码有没有错,但是最近一编译就报一大堆import找不到或者找不到符号的问题,这个问题比较常见,网上一搜也有很多人问。

因为最初对Maven没什么概念(其实现在也一样),编译的命令被我从 install 改成了 compile ,因为这样更快一些。。但之前都一直很正常,现在突然就编译各种乱七八糟的错误,于是各种百度google查查,有人说是jdk的问题,有人说是文件编码问题,但查了之后发现都不是,最终在一篇帖子的回复里看到了:

 

看到这个的时候,才"恍然大悟" pom 文件里配置的那些依赖到底是怎么用的,之前只是从表面上看出,这个模块需要依赖其他的模块,但不知道 compile、install 环节都是怎么利用这些模块的,加上和BOSS聊天的时候,听到他提到"本地仓库"四个字,瞬间感觉明白了什么,所以在本机做了以下的测试来加深一下Maven编译多模块项目时的简单原理。

 

 

新建Maven工程:

然后去修改common模块的pom文件,添加对utils的依赖:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <dependency>  
  2.       <groupId>com.mxm</groupId>  
  3.       <artifactId>Utils</artifactId>  
  4.       <version>0.0.1-SNAPSHOT</version>  
  5.       <scope>compile</scope>  
  6. </dependency>  


编译测试:

 

直接对common模块编译:

报错很明显,没有utils模块的jar包

 

对utils模块使用compile命令:

成功,但这时是不会把项目编译成jar包放在本地仓库中的。

 

对utils模块使用install命令:

这时就可以看到在本地仓库中同步了jar包。

 

这时再对common模块编译:

通过,这时把本地仓库下的Utils-0.0.1-SNAPSHOT.jar删掉,再编译依旧会报错。

 

结论:

所以,验证之后对Maven编译和多模块间的依赖有了理解,虽然这可能是Maven本身的基础知识,但因为一直对Maven没有研究,只是凭pom文件中的配置简单个人理解,造成了编译出错这种比较低级的问题。。

分享到:
评论

相关推荐

    apache-maven-3.3.9

    每个生命周期又包含多个阶段,如compile、test、install和deploy。 4. **依赖管理**:Maven通过中央仓库管理依赖,开发者只需要在POM中声明依赖,Maven会自动下载并解决依赖冲突。此外,Maven支持传递性依赖,即...

    apache-maven-3.9.6版本-内含安装说明-用于Mac系统

    **仓库**: Maven使用远程仓库(如中央Maven仓库)和本地仓库(默认位于用户主目录下的`.m2/repository`)来存储依赖。当项目需要某个依赖时,Maven首先会查找本地仓库,如果没有则从远程仓库下载。 **聚合项目与...

    apache-maven-3.6.1 安装包

    5. **仓库管理**:Maven使用中央仓库(Central Repository)和本地仓库(Local Repository)来存储依赖。中央仓库包含了大量的开源项目,而本地仓库则保存了项目构建过程中下载的所有依赖。 6. **Maven命令行界面**...

    apache-maven-3.2.5.rar

    Maven拥有三个主要的生命周期阶段:`clean`,`default`(或`compile`),和`install`。`clean`用于清理项目产生的目标目录;`default`包括编译、测试、打包等步骤;`install`则将构建好的项目安装到本地仓库,便于...

    maven-source-without-ratCheck

    `maven-settings`、`maven-plugin-api`、`maven-repository-metadata`、`maven-aether-provider`、`maven-model`和`maven-artifact`这些文件名暗示了它们分别是Maven的配置、API、仓库元数据、Aether库(用于仓库...

    apache-maven-3.5.4-bin.zip,本地maven库压缩包

    - **生命周期(Lifecycle)**:Maven有一套预定义的构建生命周期,如`clean`、`compile`、`test`、`package`、`install` 和 `deploy`,每个阶段都有对应的阶段目标(Phase)。 - **插件(Plugins)**:Maven的构建...

    Maven-3.2.5, 64位

    其次,`localRepository`是Maven的本地仓库路径,它存储了所有下载的依赖项和构建结果。在`conf/settings.xml`文件中,我们可以找到`&lt;localRepository&gt;`节点,其默认值通常为用户的主目录下的`.m2/repository`。为了...

    maven-3.3.9.zip

    Maven的生命周期包含清理(clean)、初始化(initialize)、编译(compile)、测试(test)、打包(package)、验证(verify)、安装(install)和部署(deploy)等阶段。通过命令行执行如`mvn clean compile`,...

    apache-maven-3.5.4-bin.zip

    Maven拥有生命周期(Lifecycle),包括清洁(clean)、编译(compile)、测试(test)、打包(package)、验证(verify)、集成测试(integration-test)、安装(install)和部署(deploy)等阶段。通过执行不同的...

    apache-maven-3.5.0

    4. **标准项目结构**:Maven提倡一种标准化的项目结构,使得不同项目间的迁移和理解变得容易。例如,源代码通常放在`src/main/java`,测试代码放在`src/test/java`,资源文件放在`src/main/resources`等。 5. **...

    apache-maven-3.1.1

    - **本地仓库(Local Repository)**:默认位于用户主目录的`.m2/repository`下,存储项目的依赖和已安装的工件。 - **远程仓库(Remote Repository)**:如Maven中央仓库(Central Repository),提供公开的第三方...

    apache-maven-3.6.3.zip

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。Maven 使用一种标准化的项目对象模型(Project ...通过理解和掌握Maven的工作原理和使用方式,开发者可以更高效地管理和构建Java项目。

    maven3.9.rar

    4. **执行构建命令**: 使用Maven的命令行工具进行构建操作,如`mvn clean compile`用于清理并编译项目,`mvn package`用于打包项目,`mvn install`将项目安装到本地仓库,`mvn deploy`则将项目部署到远程仓库。...

    apache-maven-3.5.2 资源包以及配置方法

    7. **生命周期和构建阶段**:Maven有一套预定义的生命周期,如`compile`、`test`、`package`、`install`和`deploy`,每个生命周期包含多个构建阶段。通过`mvn &lt;phase&gt;`命令,开发者可以控制项目的构建过程。 在实际...

    apache-maven-3.5.0.rar

    使用Maven的命令行接口,你可以执行各种构建任务,如`mvn clean`清理项目,`mvn compile`编译源代码,`mvn test`运行测试,`mvn package`打包应用,`mvn install`将项目安装到本地仓库,以及`mvn deploy`将项目部署...

    apache-maven-3.6.3-bin,设置库地址

    Maven的生命周期包括`clean`、`default`(也称为`compile`)和`install`等阶段,每个阶段都有一系列的构建目标。例如,`mvn clean`清理项目,`mvn compile`编译源代码,`mvn package`打包项目,`mvn install`将项目...

    apache-maven多版本.zip

    2. **仓库 (Repository)**:Maven使用本地仓库存储下载的依赖,同时连接到中央仓库(Central Repository)和其他远程仓库获取外部依赖。 3. **生命周期 (Lifecycle)**:Maven有三个主要的生命周期,包括`clean`...

    apache-maven-3.6.3

    仓库分为本地仓库(Local Repository)和远程仓库(Remote Repository),本地仓库是Maven默认保存下载依赖的地方,而远程仓库则可以是Maven中央仓库或其他私有仓库。 在压缩包的文件名列表中,"repository"可能...

    apache-maven-3.6.3-bin指南.doc

    例如,如果你想要更改本地仓库的位置,可以编辑`settings.xml`并修改`localRepository`元素。 **六、创建并构建项目** 现在你已经成功安装了Maven,可以开始创建和管理项目。使用`mvn archetype:generate`命令生成...

    maven-3.2.3环境的配置的压缩包

    &lt;localRepository&gt;/path/to/your/maven/repository&lt;/localRepository&gt; ``` - 如果你想配置镜像源以提高下载速度,可以在 `settings.xml` 中添加: ```xml &lt;id&gt;aliyun&lt;/id&gt; 阿里云 Maven 镜像&lt;/name&gt; &lt;url&gt;...

Global site tag (gtag.js) - Google Analytics