精华内容
下载资源
问答
  • maven:命令行执行junit 测试示例

    千次阅读 2020-07-08 15:21:55
    有时间我们希望在命令行执行JUNIT测试,该怎么做呢?举例说明吧。 如下我要在命令行执行common-base2项目下的junit 测试类NetworkTest.java 测试类的testGetPhysicalNICs方法,执行如下命令: mvn -Dtest=...

    有时我们希望在命令行执行JUNIT测试,该怎么做呢?
    举例说明吧,如下我要在命令行执行common-base2项目下的junit 测试类NetworkTest.javatestGetPhysicalNICs方法,执行如下命令:

    mvn -Dtest=NetworkUtilTest#testGetPhysicalNICs -DskipTests=false test

    -Dtest=$class#method定义要执行的测试类及方法,如果不指定方法名则默认执行该测试类的所有方法
    -DskipTests=false 指定maven test插件的属性skipTestsfalse,即不跳过测试,此选项是可选的,默认skipTests就为false,但因为我的项目为了减少编译时间在pom.xml中设置了skipTeststrue (<skipTests>true</skipTests>),所以我要在命令行执行test插件就必须显式指定skipTeststrue

    执行效果如下图:
    在这里插入图片描述

    展开全文
  • 因为通过命令行插件配置,可以改变相应插件的行为,使其更符合需要。 使用语法: maven命令 -D参数=参数值 比如: mvn install -Dmaven.test.skip=true ,其中maven命令为install,参数为maven.test....

    在实际使用中,命令行使用也是比较频繁的。

    通过命令行插件配置,可以更有效地使用命令达到我们的目标。

    因为通过命令行插件配置,可以改变相应插件的行为,使其更符合需要。

    使用语法:

    maven命令 -D参数=参数值


    比如:

    mvn install -Dmaven.test.skip=true,其中maven命令为install,参数为maven.test.skip,参数值为true,

    执行这个命令后,将构建安装到本地仓库时,自动跳过测试代码

    ==============================================================================

    并不是所有插件都适合从命令行配置,有些参数的值从项目创建到发布都不会改变,或者很少改变,对于这种情况,在POM文件中一次性配置就显然比重复在命令行中输入要方便了。

    用户可以在生命插件的时候,对插件进行一个全局的设置。例如,我们通常会需要配置maven-compile-plugin告诉它编译Java 1.7版本的源代码,生成与JVM 1.7兼容的字节码文件,

    这样不管绑定到compile阶段的maven-compile-plugin:compile任务,还是绑定的到test-compile阶段的maven-compile-plugin:testCompile任务,就都能使用该全局配置,

    基于Java1.7版本进行编译。

    复制代码
    <build>
        <plugins>
            <!-- 插件定义 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.1</version>
                <!-- 对插件进行全局设置,不管此插件绑定到什么阶段都使用同样的配置 -->
                <configuration>
                    <!-- 编译1.7版本的源文件 -->
                    <source>1.7</source>
                    <!-- 生成与JVM 1.7 兼容的字节码文件 -->
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    复制代码

    展开全文
  • Maven插件命令行执行

    千次阅读 2015-07-26 06:24:25
    用了一段时间的maven,但是只是简单的...最近好好接触了一下maven的生命周期和插件机制,被其强大的可配置性所折服。此处简要记录自己所感并分享。 简单接触 maven中所有的插件都是配置在标签<build>-->&l...

    用了一段时间的maven,但是只是简单的使用它来解决依赖问题以及打包而已,配置文件只是使用了<dependency>这么一个配置。最近好好接触了一下maven的生命周期和插件机制,被其强大的可配置性所折服。此处简要记录自己所感并分享。

    简单接触

    maven中所有的插件都是配置在标签<build>--><plugins>下面,其下每一个<plugin>标签对应一个插件。官方自带的插件五花八门,用的最多的无非是maven-compiler-pluginmaven-dependency-pluginmaven-surefire-plugin等。官方网址
    每一个插件可以定义插件的groupIdartifactId,以及要执行的<executions>executions下可以定义一大堆的execution用来定义具体的任务,其中又包括目标、绑定的阶段、配置等参数。大致上配置文件如下:

    xml<build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.3</version>
                    <executions>
                        <execution>
                            <id>compile</id>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                            <configuration>
                                <source>1.7</source>
                                <target>1.7</target>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.10</version>
                    <executions>
                        <execution>
                            <id>get_source</id>
                            <goals>
                                <goal>get</goal>
                                <goal>unpack</goal>
                            </goals>
                            <phase>process-resources</phase>
                            <configuration>
                                <artifact>com.alibaba.middleware.race:rpc-api:1.0:jar:sources</artifact>
                                <artifactItems>
                                    <artifactItem>
                                        <groupId>com.alibaba.middleware.race</groupId>
                                        <artifactId>rpc-api</artifactId>
                                        <version>1.0</version>
                                        <classifier>sources</classifier>
                                    </artifactItem>
                                </artifactItems>
                                <outputDirectory>${project.build.sourceDirectory}</outputDirectory>
                                <excludes>META-INF\/**</excludes>
                            </configuration>
                        </execution>
                    </executions>
    
                    <!--<configuration>-->
                        <!--<artifact>com.alibaba.middleware.race:rpc-api:1.0:jar:sources</artifact>-->
                    <!--</configuration>-->
                </plugin>
            </plugins>
        </build>
    

    其中maven-dependency-plugin插件下的任务先从中央库下载com.alibaba.middleware.race:rpc-api:1.0:jar:sources的jar包,再解压到指定的目录并排除META-INF文件夹。(由于本人刚接触,这种写法可能不是最佳实践,如果有人有更好的写法的话恳请告知。)这个id为get_source的任务绑定到了阶段process-resources,在执行到default生命周期的该阶段时会执行这个任务。运行mvn compile,成功执行,感觉良好。

    命令行执行

    现在想要在命令行下不是执行某个阶段,而是直接执行某个插件的任务。命令

    mvn org.apache.maven.plugins:maven-dependency-plugin:get -Dartifact=com.alibaba.middleware.race:rpc-api:1.0:jar:sources
    

    或者其缩写

    mvn dependency:get -Dartifact=com.alibaba.middleware.race:rpc-api:1.0:jar:sources
    

    成功下载了指定的源文件。看来命令行执行插件也很容易,但是有一个小问题:我没办法不指定artifact,也就是直接执行

    mvn dependency:get
    

    会有错误。但是我想使用配置文件中的artifact配置,而不想每次运行都敲那么一大串(不使用周期绑定的情况下)。

    我尝试了在上面的配置文件中加入了注释掉的那部分内容,直接运行mvn dependency:get,没出错,似乎可行。

    想要更灵活的命令行执行

    注释部分的内容虽然可行,dependency插件的get任务虽然找到了该配置,但是缺点也很明显:

    1. 我没办法针对不同的任务使用不同的配置;
    2. 我没办法一条命令运行两个任务。

    对于1,假如现在我有另一个id为get_sources2的任务,它是把com.alibaba.middleware.race:rpcapi:2.0:jar:sources这么一个版本的包下载并拷贝到相同目录下,而且和get_sources只能运行一个。这样的话明显的不能使用“全局的配置”,这样会有冲突;而在每个execution中定义的参数,是没办法被mvn dependency:get这样识别的。

    对于2,我要想执行“下载并解压到指定目录”这个操作,必须执行:

    mvn dependency:get
    mvn dependency:unpack ##(当然,需要先向get那样配置参数)
    

    两条语句虽然不多,但是当任务中又有copy等其他goal时,也是相当麻烦的。

    最为理想的状态是:有这么一条命令,能够让我指定运行时的某个插件具体的任务,而不是仅仅运行某个目标。比如类似如下的命令:

    mvn dependency:get_sources ##(get_sources为某个execution的id)
    

    这样的话,这两个问题都完美解决了(不绑定生命周期的阶段情况下)。但是很遗憾,maven不支持这种操作

    不过倒是有一种办法可以解决问题1:使用默认的execution id名:default-cli。凡是execution iddefault-cli的任务,命令行运行时如果goalgoals中有定义,则goal与其参数会被执行。这其实是将“全局配置”放在了“默认配置”中。好处在于可以定义几个任务,然后需要执行哪个任务,只需要把<id>改为default-cli就行了。虽然要修改pom.xml,但是也不算麻烦。

    对于问题2,如果存在任务之间的依赖定义的话,倒是可以把目标getunpack分别定义在不同的任务中,然后任务中指定依赖关系:unpack依赖get,这样只需要执行unpack即可自动执行get,就像ant中<target>depends那样。但是我没有找到如何定义这种“任务间的依赖”。

    更深入的学习

    当然,并非没有可能简化:如果能自己写一个插件的话,一切问题都不在话下。但是现在自己的水平还远远没有到那种程度。学习之路依旧遥远。

    PS:Maven相比于ant的很大的进步之处在于其周期和阶段的概念。除了极少数不适合绑定阶段的任务外还是多使用阶段和任务的绑定比较好,能省很多麻烦。

    PPS:本人学习maven未深,理解可能出现偏差,如果有人发现文中的疏漏或者错误,恳请指正以免误导他人。

    展开全文
  • 如果在命令行运行mvn -h来显示mvn命令帮助,就可以看到如下的信息: usage: mvn [options] [<goal(s)>] [<phase(s)>] Options: -am,--also-make If project list is specified, also ...

    如果在命令行运行mvn -h来显示mvn命令帮助,就可以看到如下的信息:

    usage: mvn [options] [<goal(s)>] [<phase(s)>]
    
    Options:
     -am,--also-make                        If project list is specified, also
                                            build projects required by the
                                            list
     -amd,--also-make-dependents            If project list is specified, also
                                            build projects that depend on
                                            projects on the list
     -B,--batch-mode                        Run in non-interactive (batch)
                                            mode (disables output color)
     -b,--builder <arg>                     The id of the build strategy to
                                            use
     -C,--strict-checksums                  Fail the build if checksums don't
                                            match
     -c,--lax-checksums                     Warn if checksums don't match
    ....
    ....

    goal和phase分别指插件目标和生命周期阶段。
    我们知道,可以通过mvn命令激活生命周期阶段,从而执行那些绑定在生命周期阶段上的插件目标。但Maven还支持直接从命令行调用插件目标。Maven支持这种方式是因为有些任务不适合绑定在生命周期上,例如maven-help-plugin:describe,我们不需要在构建项目的时候去描述插件信息。又如maven-dependency-plugin:tree,我们也不需要在构建项目的时候去显示依赖树。因此这些插件目标应该通过如下方式使用:

    mvn help:describe -Dplugin=compiler
    mvn dependency:tree

    不过,这里还有一个疑问,describe是maven-help-plugin的目标没错,但冒号前面的help是什么呢?它既不是groupId,也不是artifactId,Maven是如何根据该信息找到对应版本插件的呢?同理,为什么不是maven-dependency-plugin:tree而是dependency:tree呢?
    解答该疑问之前,可以先尝试一下如下的命令:

    mvn org.apache.maven.plugins:maven-help-plugin:2.1:describe -Dplugin=compiler
    mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:tree

    这两条命令就比较容易理解了。它们的效果与之前的两条命令基本是一样的,但显然前面的命令更简洁,更容易记忆和使用。为了达到该目的,Maven引入了目标前缀的概念。help是maven-help-plugin的目标前缀,dependency是maven-dependency-plugin的目标前缀,有了插件前缀,Maven就能找到对应的artifactId。不过仅有artifactId,而没有groupId和version,Maven是无法精确定位到某个插件的。那么,Maven是如何做到的呢?我们将在后面的文章详细剖析这个问题。

     

    展开全文
  • </plugins> </pluginManagement> </build> 这个插件太重要了,它提供了很多的功能: 把项目打包成一个可执行的超级JAR(uber-JAR),包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,其中的内容能...
  •  当插件的目标绑定到不同的生命周期阶段的时候、插件目标的执行顺序是有生命周期阶段的顺序决定的、当多个插件目标绑定到同一生命周期阶段的时候、顺序是按照插件声明的顺序来决定目标的执行顺序。 =========...
  • Maven命令行参数解释

    2018-12-05 10:17:25
    java的-D命令行参数我们会用mvn启动一个应用,如下的命令行: mvn package -Dmaven.test.skip=true -P dev我们来解析一下这些命令行的意义. -Dxxxx是java运行参数的语法作用是配置一些环境变量,具体有哪些参数,参数有...
  • Maven命令行查看依赖树

    千次阅读 2021-03-08 10:53:17
    这里介绍一种通过Maven中的插件,基于命令行实现依赖树查看的方法。 基本命令如下: mvn dependency:tree 在项目工程中使用该命令可以查看当前工程依赖包所产生的依赖树。 当然,在我们使用多模块编程时,会遇到...
  • 现在最新的maven版本是 3.6,我这里用的还是 2017 年下载的 3.1.1 版本(虽然有点过时,但是大版本不变,指令基本一样) mvn -h, --help 使用 help 命令可以看到 maven 命令的帮助文档,下面主要介绍两个常用...
  • maven使用命令行打包

    千次阅读 2019-12-18 23:02:39
    1,首先将控制台执行切换到项目的根目录 如下图: 2,然后就是直接执行mvn clean ...1、使用清理插件maven-clean-plugin:2.5执行清理删除已有target目录(版本2.5); 2、使用资源插件maven-resources-plugin...
  • 一、建maven项目(eclipse ee版本) 选这两项就可以建maven项目了 二、设置maven 一是修改setting.xml(maven的conf目录) 修改本地仓库地址:&lt;localRepository&gt;d:/.m2/repository&lt;/...
  • mvn(Maven命令行参数含义

    千次阅读 2019-12-09 15:21:09
    Maven命令行选项 以下各节详细介绍了Maven的命令行选项。 1。定义属性 要定义属性,请在命令行上使用以下选项: -D,--define <arg> 定义系统属性 这是最常用于自定义Maven插件行为的选项。...
  •  Maven Projects成功 Maven命令行出错!!
  • maven基本使用方法(命令行

    千次阅读 2018-12-02 00:35:40
    本篇记录一下maven命令行的构建方法,后面讲在idea怎么用。 参考 这里 有详细的maven教程。 创建maven项目 最基本的maven项目创建命令如下 mvn archetype:generate -DgroupId={{your_DgroupId}} -DartifactId={{...
  • A:我本也是用着侧边栏好好的,觉得命令行没得必要,然鹅,有一天我看到同事操作的一手mvn clean install 觉得很是炫酷,比我先点clean再点install省事儿,你要说这个不重要也不过分,但是,发版打包时候,mvn ...
  • Maven的生命周期 Maven拥有三套相互独立的生命周期,它们分别为clean,default和site。(page97) 每个生命周期包含一些阶段(phase),这些阶段时有顺序的,并且后面的阶段依赖于前面的阶段。 较之于生命周期阶段的...
  • 先把命令行切换到Maven项目的根目录,比如:/d/xxxwork/java/maven-test,然后执行命令:mvn clean package执行结果如下:[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------...
  • 使用命令:mvn archetype:generate -DarchetypeCatalog=internal ...第二步:在根项目所在目录中使用命令创建子模块(创建web模块是需选择maven-archetype-webapp) 第三步:修改根下面的pom.xml,主要加入eclipse相关
  • Maven打包Package执行插件的顺序

    千次阅读 2019-11-20 09:29:35
    先把命令行切换到Maven项目的根目录,比如:/d/xxxwork/java/maven-test,然后执行命令: mvn clean package 执行结果如下: [INFO] Scanning for projects... [INFO] [INFO] -----------------------------------...
  • maven通常结合ide使用,但是在有些场景下,需要使用mvn命令行,尤其是项目打包及安装。 maven常用命令行 进入工程目录,运行mvn命令: 编译项目:mvn compile 打包:mvn package 打包时跳过测试:mvn package -...
  • maven详解
  • 先把命令行切换到Maven项目的根目录,比如:/d/xxxwork/java/maven-test,然后执行命令:mvn clean package执行结果如下:[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------...
  • JDK 的安装系统的“系统偏好设置”中我们可以看到 Java的设置, Java 7(含) 之后的版本在这里可以看到。...JRE 和 JDK 不同版本问题:从 java.com 或 oracle.com 下载的 Java 运行时 (JRE) ...要使用命令行工具,您需...
  • 一、maven项目中maven插件 1.在pom.xml中添加plugin &lt;dependency&gt; &lt;groupId&gt;org.mybatis&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring&lt;/artifactId&...
  • maven命令行不香吗?

    2020-06-12 00:05:48
    maven常用命令虽然idea带有maven插件,但是熟悉一下maven的命令还是不错的~~~用完之后,真香!maven 命令的格式为 「mvn [plugin-name]:[goal-...
  • Maven 命令行选项

    2017-07-05 08:52:21
    1、使用-选项时,和后面的参数之间可以不要空格。而使用--选项时,和后面的参数之 间必须有空格。如下面的例子: ...2、有些命令行选项是从Maven2.1才有的。 3、更多命令行选项请查看mvn -h   定
  • maven:sql-maven-plugin插件执行sql脚本

    千次阅读 2017-08-16 23:21:55
    sql-maven-plugin插件提供了sql脚本的执行功能,允许用户执行指定的sql脚本文件或语句。最近在进行一个项目是基于maven管理的java开发项目,其中有一个环节要对数据库初始化创建表,需要在maven执行,正好有机会学习...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,985
精华内容 9,594
关键字:

maven命令行执行插件