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

相关推荐
爱是小小的癌14 分钟前
Java-数据结构-栈与队列(常考面试题与单调栈)
java·数据结构·算法·面试
汤姆yu18 分钟前
基于Android的校园自助打印系统的设计与实现
android·java·spring boot·后端·vue
Q_274378510918 分钟前
基于springboot果蔬供应链信息管理平台
spring boot·信息可视化·数据分析
我想学LINUX2 小时前
【2024年华为OD机试】 (C卷,100分)- 括号匹配(Java & JS & Python&C/C++)
java·c语言·javascript·c++·python·华为od
前鼻音太阳熊3 小时前
【Spring Boot 应用开发】-03 自动配置
java·spring boot·后端
穷儒公羊5 小时前
第三十六章 Spring之假如让你来写MVC——拦截器篇
java·后端·spring·servlet·mvc·jsp
五行星辰8 小时前
Servlet与JSP:Java的秘密花园入口
java·开发语言·servlet
Q_27437851099 小时前
django基于 Python 的考研学习系统的设计与实现
java·python·考研·django
Yang-Never9 小时前
Shader -> SweepGradient扫描渐变着色器详解
android·java·kotlin·android studio·着色器
我想学LINUX9 小时前
【2024年华为OD机试】 (C卷,100分)- 消消乐游戏(Java & JS & Python&C/C++)
java·c语言·javascript·c++·游戏·华为od