6-Maven的使用

6-Maven的使用

常用maven命令

//常用maven命令

mvn -v //查看版本

mvn archetype:create //创建 Maven 项目

mvn compile //编译源代码

mvn test-compile //编译测试代码

mvn test //运行应用程序中的单元测试

mvn site //生成项目相关信息的网站

mvn package //依据项目生成 jar 文件

mvn install //在本地 Repository 中安装 jar

mvn -Dmaven.test.skip=true //忽略测试文档编译

mvn clean //清除目标目录中的生成结果

mvn clean compile //将.java类编译为.class文件

mvn clean package //按照pom文件制定的打包方式和插件打包,生成的包会在target目录下

mvn clean test //执行单元测试

mvn clean deploy //发布到当前项目的jar包到本地仓库和远程仓库

mvn clean install //使其他项目使用这个jar,会安装到maven本地仓库中

mvn archetype:generate //创建项目架构

mvn dependency:list //查看已解析依赖

mvn dependency:tree //看到依赖树

mvn dependency:analyze //查看依赖的工具

mvn help:system //打印所有可用的环境变量和Java系统属性

mvn help:active-profiles //查看当前激活的profiles

mvn help:all-profiles //查看所有profiles

mvn help:effective-pom //查看完整的pom信息

mvn help:effective-settings//查看有效setttings配置

mvn -X // 查看当前项目的所有mvn配置

Maven 属性【变量】

Maven共有6类属性:

  1. 内置属性(Maven预定义,用户可以直接使用)

    ${basedir}表示项目根目录,即包含pom.xml文件的目录;

    ${version}表示项目版本;

    p r o j e c t . b a s e d i r 同 {project.basedir}同 project.basedir同{basedir};

    ${project.baseUri}表示项目文件地址;

    ${maven.build.timestamp}表示项目构件开始时间;

  2. POM属性(使用pom属性可以引用到pom.xml文件对应元素的值)

    ${project.build.directory}表示主源码路径;

    ${project.build.sourceEncoding}表示主源码的编码格式;

    ${project.build.sourceDirectory}表示主源码路径;

    ${project.build.finalName}表示输出文件名称;

    p r o j e c t . v e r s i o n 表示项目版本 , 与 {project.version}表示项目版本,与 project.version表示项目版本,与{version}相同;

  3. 自定义属性(在pom.xml文件的标签下定义的Maven属性)

    复制代码
       <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>

    在其他地方使用${maven.build.timestamp.format}使用该属性值。

  4. settings.xml文件属性(与pom属性同理,用户使用以settings.开头的属性引用settings.xml文件中的XML元素值)

    ${settings.localRepository}表示本地仓库的地址;

  5. Java系统属性(所有的Java系统属性都可以使用Maven属性引用)

    使用mvn help:system命令可查看所有的Java系统属性;

    System.getProperties()可得到所有的Java属性;

    ${user.home}表示用户目录;

  6. 环境变量属性(所有的环境变量都可以用以env.开头的Maven属性引用)

    使用mvn help:system命令可查看所有环境变量;

    ${env.JAVA_HOME}表示JAVA_HOME环境变量的值;

代码中使用Maven属性

通过在application.yml 或者 application.properties 配置文件中设置对应的属性,然后再通过@Value()引用配置文件的变量。具体如下

  1. 第一步:在pom.xml中配置

    xml 复制代码
    <build>
        <resources>
            <resource>
                <!--使用maven渲染properties-->
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
  2. 第二步:在yml中使用@@使用maven变量;在properties中使用${}使用maven变量

    yml 复制代码
    # 当前是application.yml配置文件
    
    userhome: @user.home@
    localRepostory: @settings.localRepository@
    properties 复制代码
    # 当前是application.properties配置文件
    
    project.dir=${project.build.directory}
  3. 第三步:在java代码中使用

    java 复制代码
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    @Slf4j
    public class ApplicationTest {
    	@Value("${project.dir}")
        private String projectDir;
    
        @Value("${userhome}")
        private String userHome;
    
        @Value("${localRepostory}")
        private String localRepostory;
    
        @Value("${timestamp}")
        private String timestamp;
    
        @Test
        public void test(){
            System.out.println("projectDir~~~~~~~~~~~~~~~~~~~"+projectDir);
            System.out.println("userHome~~~~~~~~~~~~~~~~~~~"+userHome);
            System.out.println("localRepostory~~~~~~~~~~~~~~~~~~~"+localRepostory);
            System.out.println("timestamp~~~~~~~~~~~~~~~~~~~"+timestamp);
        }
    }
    tex 复制代码
    控制台输出:
        
    projectDir~~~~~~~~~~~~~~~~~~~D:\workspace-boyun\boyunproduct_6.0\bocloud.cop\bocloud.cop.booter\target
    userHome~~~~~~~~~~~~~~~~~~~C:\\Users\\a
    localRepostory~~~~~~~~~~~~~~~~~~~D:\\MavenWarehouseBoCloud
    timestamp~~~~~~~~~~~~~~~~~~~20240123-1513

IDEA中使用Maven

相关推荐
N_NAN_N15 分钟前
[蓝桥杯 2024 国 Python B] 设计
java·数据结构·算法·并查集
weixin_4837456235 分钟前
Springboot项目的目录结构
java·后端
米奇找不到妙妙屋1 小时前
部分请求报 CROS ERROR
spring boot·vue
Tirson Yang1 小时前
西安java面试总结1
java·面试
小猫咪怎么会有坏心思呢1 小时前
华为OD机试-猴子爬山-dp(JAVA 2025A卷)
java·算法·华为od
保持学习ing1 小时前
SpringBoot 前后台交互 -- CRUD
java·spring boot·后端·ssm·项目实战·页面放行
啾啾Fun2 小时前
Java反射操作百倍性能优化
java·性能优化·反射·缓存思想
20岁30年经验的码农2 小时前
若依微服务Openfeign接口调用超时问题
java·微服务·架构
曲莫终2 小时前
SpEl表达式之强大的集合选择(Collection Selection)和集合投影(Collection Projection)
java·spring boot·spring
ajassi20003 小时前
开源 java android app 开发(十二)封库.aar
android·java·linux·开源