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

相关推荐
科技资讯早知道6 分钟前
java计算机毕设课设—坦克大战游戏
java·开发语言·游戏·毕业设计·课程设计·毕设
苹果醋31 小时前
快速玩转 Mixtral 8x7B MOE大模型!阿里云机器学习 PAI 推出最佳实践
spring boot·nginx·毕业设计·layui·课程设计
程序员大金1 小时前
基于SpringBoot+Vue+MySQL的装修公司管理系统
vue.js·spring boot·mysql
小比卡丘1 小时前
C语言进阶版第17课—自定义类型:联合和枚举
android·java·c语言
xmh-sxh-13141 小时前
java 数据存储方式
java
liu_chunhai1 小时前
设计模式(3)builder
java·开发语言·设计模式
ya888g2 小时前
GESP C++四级样题卷
java·c++·算法
【D'accumulation】2 小时前
令牌主动失效机制范例(利用redis)注释分析
java·spring boot·redis·后端
小叶学C++2 小时前
【C++】类与对象(下)
java·开发语言·c++
2401_854391082 小时前
高效开发:SpringBoot网上租赁系统实现细节
java·spring boot·后端