首页 > 其他分享 >Maven系列(二)exec-maven-plugin

Maven系列(二)exec-maven-plugin

时间:2023-12-25 22:23:31浏览次数:34  
标签:maven java exec plugin Maven com mvn

转载自:https://www.cnblogs.com/binarylei/p/8628243.html

Maven系列(二)exec-maven-plugin

Maven系列(二)exec-maven-plugin

1. mvn 命令行运行

# exec:java 不会自动编译代码,你需要手动执行 mvn compile 来完成编译
mvn compile 
# 执行 exec 运行 main 方法
mvn exec:java -Dexec.mainClass="com.github.binarylei.Main" 
    -Dexec.args="arg0 arg1 arg2" 
mvn exec:exec -Dexec.executable="java" -Dexec.args="-DsystemProperty1=value1 -DsystemProperty2=value2 
    -XX:MaxPermSize=256m -classpath %classpath com.github.binarylei.Main arg1 arg2"

2. exec:java

exec 主要由两个 goal 组成:exec:exec 和 exec:java。你应该如何选择呢?

  • 首先,你需要记住,exec:exec 总是比 exec:java 强大而灵活
  • 此外,两者的主要区别是在线程管理上:exec:exec 总是启动一个新的线程,并且在只剩下守护线程的时候从 VM 上退出(关闭应用程序)。而对于 exec:java,当所有非守护线程结束时,守护线程会被 join 或 interrupt,应该程序不会关闭。

一般的使用者来说,这种差别并不重要。对于两者的选择,一般来说,如果你的工程启动非常简单,不需要设置 jvm 参数、系统属性、命令行参数,那么就用 exec:java,你只需要指定一下 mainClass,一切就 OK 了。例如这面这段配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
        <execution>
            <phase>install</phase>
            <goals>
                <goal>java</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <mainClass>com.github.binarylei.Main</mainClass>
    </configuration>
</plugin>

3. exec:exec

假定我们的应用程序是通过这样的 java 命令来启动的:

java -DsystemProperty1=value1 -DsystemProperty2=value2 -XX:MaxPermSize=256m 
    -classpath .... com.github.binarylei.Main arg1 arg2

这个启动命令先后为应用程序设置了必要的系统属性:

  • systemProperty1 和 systemProperty2,
  • jvm 参数
  • classpath:....省略的部分就是我不说你也能想到会有多么冗长的类路径
  • 程序入口:--主类的类名,arg1/arg2 是传给应用程序的命令行参数
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
        <execution>
            <phase>install</phase>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <executable>java</executable> <!-- executable指的是要执行什么样的命令 -->
        <arguments>
            <argument>-DsystemProperty1=value1</argument> <!-- 这是一个系统属性参数 -->
            <argument>-DsystemProperty2=value2</argument> <!-- 这是一个系统属性参数 -->
            <argument>-XX:MaxPermSize=256m</argument> <!-- 这是一个JVM参数 -->
            <argument>-classpath</argument> <!-- 这是classpath属性,其值就是下面的<classpath/> -->
            <classpath/> <!-- 这是exec插件最有价值的地方,工程的classpath并不需要手动指定,由exec自动计算得出 -->
            <argument>com.github.binarylei.Main</argument> <!-- 程序入口,主类名称 -->
            <argument>arg1</argument> <!-- 程序的第一个命令行参数 -->
            <argument>arg2</argument> <!-- 程序的第二个命令行参数 -->
        </arguments>
    </configuration>
</plugin>

如果 pom 配置了插件则通过以下命令启动程序:

mvn exec:exec 或
mvn installs

是不是简洁了很多。

4. profiles

<profiles>
    <profile>
        <id>dev</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.2.1</version>
                    <executions>
                        <execution>
                            <phase>install</phase>
                            <goals>
                                <goal>java</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <mainClass>com.github.binarylei.Main2</mainClass>
                        <arguments>
                            <argument>arg1</argument>
                            <argument>arg2</argument>
                        </arguments>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

maven 中可以通过以下命令启动程序:

mvn installs -Pdev
   

标签:maven,java,exec,plugin,Maven,com,mvn
From: https://www.cnblogs.com/wanghengbin/p/17927097.html

相关文章

  • Maven War 插件详解
     MavenWar插件详解转载自:https://www.jianshu.com/p/0895de58c524WAR插件负责收集Web应用程序的所有依赖项、类和资源,并将它们打包到WAR包中,仅包含scope为compile+runtime的依赖项,默认绑定到package阶段。详情请参考:https://maven.apache.org/plugins/maven-w......
  • Maven打包插件之——maven-jar-plugin、maven-assembly-plugin、maven-shade-plugin
    转载自:https://blog.csdn.net/calm_encode/article/details/1039315371.打包插件的介绍   打包插件是把class文件,配置文件打包成一个jar(war或者其他格式)的包。而且可执行jar包中包含或者不包含相应的依赖包包,当不包含相应的依赖包时,我们需要建立lib目录,且jar和lib目......
  • Maven uber-jar(带依赖的打包插件)maven-shade-plugin
    转载自:https://blog.csdn.net/Ares5kong/article/details/128832989文章目录最基础的maven-shade-plugin使用生成可执行的Jar包和常用的资源转换类包名重命名打包时排除依赖与其他常用打包插件比较 本文是对maven-shade-plugin常用配置的介绍,更详细的学习......
  • Maven uber-jar(带依赖的打包插件) spring-boot-maven-plugin
    转载自:https://blog.csdn.net/Ares5kong/article/details/128791102文章目录最基础的spring-boot-maven-plugin使用指定入口类安装部署原始Jar包到仓库保持原始Jar包名称,为spring-boot-maven-plugin生成的Jar包添加名称后缀打包时排除依赖建议将生成的Jar解压后......
  • Maven maven-jar-plugin
     Mavenmaven-jar-plugin转载自:https://www.jianshu.com/p/d44f713b1ec9作用:打包(jar)插件,设定MAINFEST.MF文件的参数,比如指定运行的Mainclass、将依赖的jar包加入classpath中等等,首先我们明确一点的是maven插件功能:compile、package、deploy...都是在${project.build.di......
  • Maven 打包插件 maven-jar-plugin
    转载自:https://blog.csdn.net/Ares5kong/article/details/128777500文章目录指定版本生成可执行Jar准备依赖,并指定依赖位置自动下载依赖的Jar文件打包时排除文件与其他常用打包插件比较 本文是对maven-jar-plugin常用配置的介绍,更详细的学习请参照Apac......
  • 一些好用的maven插件介绍
     一些好用的maven插件介绍转载自:https://juejin.cn/post/7231527422200692794Maven插件是扩展Maven功能的方式之一,它可以帮助我们更轻松地管理依赖性、构建应用程序、运行测试和部署应用程序等。maven插件实在是太多了,我这里也介绍不完,仅仅以我使用过的也比较实用的给大家......
  • Taurus .Net Core 微服务开源框架:Admin 插件【4-5】 - 配置管理-Mvc【Plugin-Admin 后
    前言:继上篇:Taurus.NetCore微服务开源框架:Admin插件【4-4】-配置管理-Mvc【Plugin-CORS跨域】本篇继续介绍下一个内容:系统配置节点:Mvc- Plugin- Admin 后台界面:配置界面如下: 配置说明如下:1、Admin.IsEnable:配置当前后台插件是否可用这是个很危险的开关:如果......
  • Hzero教程:创建基于hzero的springboot单体maven项目完整步骤
    创建项目更新时间:2023-12-0115:38:30介绍项目是基于Springboot的maven项目,本章节介绍怎样创建基于HZERO平台的项目。新建maven项目添加项目依赖添加默认配置文件创建maven项目本地新建一个空的maven项目hzero-todo-service。$mkdir-phzero-todo-service$cdhzero-tod......
  • Maven 知识点
    目录Maven[1]1.基础知识1.1.Maven相关目录、文件1.1.1.setting.xml文件设置1.2.POM示例1.3.基础设置2.坐标和依赖2.1.坐标2.2.依赖2.2.1.依赖范围2.2.2.传递性依赖2.2.3.优化依赖3.生命周期和插件3.1.生命周期3.2.插件3.2.1.绑定生命周期阶段3.2.2.插件设置4.仓库4.1.本地仓库4......