Maven的学习笔记

Maven学习笔记

1.统一项目开发结构

java项目:

---|
--src
------main
--------|____java
--------|____resources
------test
--------|____java
--------|____resources

javaweb项目:

---|
--src
------main
--------|____java
--------|____resources
--------|____webapp
----------------|____WEB-INF
------test
--------|____java
--------|____resources

2.坐标

一用于描述资源在仓库中的位置
Maven坐标主要构成:
groupid:定义当前maven项目隶属组织名称,通常是域名反写。
artifaceid:定义当前项目名称,通常是模块名称
version:定义当前项目版本号
packaging:定义项目打包方式,一般项目源码打包为jar,web项目为war.

3.仓库配置

maven启动后,默认会保存本地的仓库到以下位置:
user.home/.m2/repository下,
由于国外仓库的资源下载较慢,建议将阿里云的中心仓库镜像地址添加到本地仓库中,选择本地仓库目录下的conf文件夹下的settings.xml文件中mirrors的位置加入以下代码并保存文件

<mirror>
		<id>alimaven</id>
		<mirrorOf>central</mirrorOf>
		<name>aliyun maven</name>
		<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

4.创建maven文件(IDEA)

配置
在IDEA中,按照下面选项依次打开:Project Structure -> Project Settings -> Modules -> + -> New Module -> Maven -> …quickstart(java)/…22webapp(web) -> Next -> 填写项目组织与项目名称 -> finish,最后将src目录下的文件夹标记为源码文件,源码资源文件,测试文件,测试资源文件等。
配置完后,右角的maven project方便项目的配置与运行(及其方便与重要).

5.tomcat插件安装与项目启动

在maven插件库网站:mvnrepository.com中搜索插件(好像不太管用,建议使用该网址:点我直达),然后复制相关的信息在pom.xml文件中,在project中添加build代码块:

<build>
    <plugins>
        <plugin>
        <!-- dd plugin 1 -->a        
        <!-- 下面的信息都是你在网站上粘贴的 --> 
        <groupID>..
        <artifaceID>..
        <version>..
        </plugin>
        <plugin>
        <!-- add plugin 2 -->        
        </plugin>
        ..
        <plugin>
        <!-- add plugin n -->
        </plugin>
    </plugins>
</build>

之后点击maven project的刷新进行下载添加
如果是tomcat插件,还可以修改端口与路径,在plugin中这样添加修改:

<plugin>
        <!-- dd plugin 1 -->a        
        <!-- 下面的信息都是你在网站上粘贴的 --> 
        <groupID>..
        <artifaceID>..
        <version>..
        <configuration>
            <port>80
            <path>/
</plugin>

说明一下pom.xml文件相关的内容:
packaging:打包方式,Java工程为jar,web工程为war
groupID:组织ID
artifaceID:项目ID
version:版本
dependencies:依赖,在其下使用dependency写各个项目的依赖,形式为:

<dependencies>
    <dependency>
        groupID:组织ID
        artifaceID:项目ID
        version:版本
    </dependency>
</dependencies>

6.依赖配置与依赖传递

假设存在两个项目:项目1和项目2,项目1需要依赖项目2,则把项目2的组织项目版本信息复制到项目1的dependency中并进行maven project刷新。

当项目2想对项目1隐藏依赖时,则在项目的依赖中这样添加修改:

<dependencies>
    ..
    <dependency>
        groupID:组织ID
        artifaceID:项目ID
        version:版本
        optional:true
    </dependency>
    ..
</dependencies>

如果项目1不想使用项目2的依赖,可以使用排出依赖,在项目1的pom.xml文件中可以这样添加修改:

<dependencies>
    ..
    <dependency>
        groupID:组织ID
        artifaceID:项目ID
        version:版本
        exclusions
            exclusion
                groupID:组织ID
                artifaceID:项目ID
                version:版本(不写版本全部排除)
    </dependency>
    ..
</dependencies>

7.依赖范围

<dependencies>
    ..
    <dependency>
        groupID:组织ID
        artifaceID:项目ID
        version:版本
        scope:test/compile/runtime/provided/system
    </dependency>
    ..
</dependencies>

8.生命周期与插件

maven-source-plugin:源码插件,可以将项目进行打包,在官网进行搜索,并将信息在build进行粘贴
然后在配置中这样修改:

<build>
    <plugins>
        <plugin>
        <groupID>..
        <artifaceID>..
        <version>..
        <exections>
            <exection>
                <exections>
                    <goals>
                        <goal>jar
                    phase:gene...
        </plugin>
    </plugins>
</build>

9.分模块开发(高级)

为了减少代码的开发难度,分解表耦合,我们在开发时将采用分包开发,即将于原来的某一个模块拆成一个小项目,示例如下:
原项目:

Spring ssm
---|
--src
------main
--------|____java
---------------|____controller(package)
---------------|____dao(package)
---------------|____service(package)
--------|____resources
--------|____webapp
----------------|____WEB-INF
------test
--------|____java
--------|____resources
pom.xml
Spring ssm.iml

拆分后:

<!-- 项目1 -->
  ssm
---|
--pom.xml
--ssm.iml

<!-- 项目2 -->
ssm controller
---|
--src.xml
--pom.xml
--ssm controller.iml

<!-- 项目3 -->
ssm dao
---|
--src.xml
--pom.xml
--ssm dao.iml

<!-- 项目4 -->
ssm service
---|
--src.xml
--pom.xml
--ssm service.iml

拆分时,maven什么模版不用选,复制原工程相关的文件以及pom.xml等相关配置,在maven project可以使用compile通过就OK,import 错误原因为dependency依赖没有导入,如果导入后依旧报错没有找到,说明在本地仓库中没有,需要使用install命令重新在本地仓库安装一下

10.聚合(聚合)

由于模块的层级依赖,如果处在非顶级的某一模块依赖进行更新,其上次的模块由于兼容性问题则不能正常工作时,便会增加维护成本,为了解决这种问题,我们新建一个文件去管理这些模块依赖,这种方式为聚合
在9中的项目1:

<!-- 项目1 -->
  ssm
---|
--pom.xml
--ssm.iml

可以看到它并没有代码,因为他要负责管理上述的2,3,4项目,其中在pom.xml文件中这样添加修改:

<project>
    <groupID>..
    <artifaceID>..
    <version>..
    
    <!-- 声明这个文件用于管理 -->
    <packaging>pom 
    
    <modules>
        <Module>项目3路径 ../ssm controller
        <Module>项目2路径
        <Module>项目4路径
        ..
</project>

如果工程packaging不写,默认jar包,但是聚合工程需要时pom

11.继承(高级)

在开发过程中,不同的开发项目在依赖其他项目时,对于依赖的同一款插件可能由于插件版本不统一,导致兼容性与功能出现问题,为了有效解决这一问题,我们通过建立新文件,让所有的项目继承该文件,在项目中去掉版本信息,在新建文件中添加版本信息,使所有依赖的项目的插件的版本进行整合统一。
在ssm 的pom.xml 文件这样添加修改:

<project>
    <groupID>..
    <artifaceID>..
    <version>..
    
    <!-- 声明这个文件用于管理 -->
    <packaging>pom 
    
    <modules>
        <Module>项目3路径 ../ssm controller
        <Module>项目2路径
        <Module>项目4路径
        ..
    <dependencyManagement>
        <depenndencies>
            <!--添加所有依赖-->
            ..
            <dependency>
                groupID:组织ID
                artifaceID:项目ID
                version:版本
            </dependency>
            ..

</project>

在子项目的pom.xml文件中定义父工程,去引用依赖,在每个子工程的pom.xml文件中这样进行添加修改:

<project>
    <parent>
        <groupID>..
        <artifaceID>ssm
        <version>.
        <relativePath>../pom.xml(引用父项目的pom文件的目录)
    <packaging>jar
    <groupID>..
    <artifaceID>..
    <version>..
    
    

    
    <depenndencies>
        <!--添加所有依赖-->
        ..
        <dependency>
            groupID:组织ID
            artifaceID:项目ID
            version:版本
        </dependency>
        ..

</project>

统一版本信息在管理项目中存在版本信息,则在子项目删除版本信息,这样便于依赖的版本同步。
同样pluginManagement也可以进行管理,管理方法同依赖方法

12.属性(高级)

自定义属性,在properties中进行定义,在pom.xml文件的修改如下:

<project>
    <groupID>..
    <artifaceID>..
    <version>..
    
    <!-- 声明这个文件用于管理 -->
    <packaging>pom 
    
    <properties>
        <变量名>info</>
        ..,
</project>

如果想要进行引用,则这样进行引用:${变量名}

13.版本管理(高级)

一般版本可以这样管理
1.2.3 shapshot
第一位通常是构架改变引起的大版本更新
第二位通常是内容功能模块的改变以及更新
第三位是当前版本的bug改进更新
最后是发行版本说明,snapshot为快照版本,不稳定,release为稳定版本。

14.多项目管理(高级)

将子项目的相关公共信息放在父pom.xml中进行管理,通常子项目的resources目录下的信息使用${变量名}是无法生效的,这涉及到了配置问题,在父级(ssm)的pom.xml文件中这样添加:

<project>
    <groupID>..
    <artifaceID>..
    <version>..
    
    <!-- 声明这个文件用于管理 -->
    <packaging>pom 
    
    <properties>
        <变量名>info</>
        ..,
    <resources>
        <resource>
            <directory>${project.basedir}子项目的资源文件的文件夹路径
            <filtering>true
</project>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值