精华内容
下载资源
问答
  • Spring Boot的Maven插件Spring Boot Maven plugin详解

    万次阅读 多人点赞 2017-07-18 15:18:20
    Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。 Spring Boot Maven plugin能够将Spring Boot应用打包为可执行...

    Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。
    Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。
    Spring Boot Maven plugin的最新版本为2017.6.8发布的1.5.4.RELEASE,要求Java 8, Maven 3.2及以后。
     

    1. Spring Boot Maven plugin的5个Goals

    • spring-boot:repackage,默认goal。在mvn package之后,再次打包可执行的jar/war,同时保留mvn package生成的jar/war为.origin
    • spring-boot:run,运行Spring Boot应用
    • spring-boot:start,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
    • spring-boot:stop,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
    • spring-boot:build-info,生成Actuator使用的构建信息文件build-info.properties

    2. 配置pom.xml文件

     

    <build>
    	<plugins>
    		<plugin>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-maven-plugin</artifactId>
                            <version>1.5.4.RELEASE</version>
    		</plugin>
    	</plugins>
    </build>

    3.mvn package spring-boot:repackage说明

     

     

    Spring Boot Maven plugin的最主要goal就是repackage,其在Maven的package生命周期阶段,能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为*.original。

    基于上述配置,对一个生成Jar软件包的项目执行如下命令。

    mvn package spring-boot:repackage

    可以看到生成的两个jar文件,一个是*.jar,另一个是*.jar.original。

     

    在执行上述命令的过程中,Maven首先在package阶段打包生成*.jar文件;然后执行spring-boot:repackage重新打包,查找Manifest文件中配置的Main-Class属性,如下所示:

    Manifest-Version: 1.0
    Implementation-Title: gs-consuming-rest
    Implementation-Version: 0.1.0
    Archiver-Version: Plexus Archiver
    Built-By: sam
    Implementation-Vendor-Id: org.springframework
    Spring-Boot-Version: 1.5.3.RELEASE
    Implementation-Vendor: Pivotal Software, Inc.
    Main-Class: org.springframework.boot.loader.JarLauncher
    Start-Class: com.ericsson.ramltest.MyApplication
    Spring-Boot-Classes: BOOT-INF/classes/
    Spring-Boot-Lib: BOOT-INF/lib/
    Created-By: Apache Maven 3.5.0
    Build-Jdk: 1.8.0_131

    注意,其中的Main-Class属性值为org.springframework.boot.loader.JarLauncher;

    Start-Class属性值为com.ericsson.ramltest.MyApplication。

    其中com.ericsson.ramltest.MyApplication类中定义了main()方法,是程序的入口。

    通常,Spring Boot Maven plugin会在打包过程中自动为Manifest文件设置Main-Class属性,事实上该属性究竟作用几何,还可以受Spring Boot Maven plugin的配置属性layout控制的,示例如下。

        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>1.5.4.RELEASE</version>
          <configuration>
            <mainClass>${start-class}</mainClass>
            <layout>ZIP</layout>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>repackage</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

    注意,这里的layout属性值为ZIP。

    layout属性的值可以如下:

    • JAR,即通常的可执行jar

    Main-Class: org.springframework.boot.loader.JarLauncher

    • WAR,即通常的可执行war,需要的servlet容器依赖位于WEB-INF/lib-provided

    Main-Class: org.springframework.boot.loader.warLauncher

    • ZIP,即DIR,类似于JAR

    Main-Class: org.springframework.boot.loader.PropertiesLauncher

    • MODULE,将所有的依赖库打包(scope为provided的除外),但是不打包Spring Boot的任何Launcher。
    • NONE,将所有的依赖库打包,但是不打包Spring Boot的任何Launcher。

     

    4.integration-test阶段中的Spring Boot Maven plugin的start/stop

     

    <properties>
      <it.skip>false</it.skip>
    </properties>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <configuration>
            <skip>${it.skip}</skip>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>1.5.4.RELEASE</version>
          <executions>
            <execution>
              <id>pre-integration-test</id>
              <goals>
                <goal>start</goal>
              </goals>
              <configuration>
                <skip>${it.skip}</skip>
              </configuration>
            </execution>
            <execution>
              <id>post-integration-test</id>
              <goals>
                <goal>stop</goal>
              </goals>
              <configuration>
                <skip>${it.skip}</skip>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>

    注意,it.skip变量用作是否跳过integration-test的标志位。

     

    maven-failsafe-plugin用作integration-test的主要执行目标。

    spring-boot-maven-plugin用以为integration-test提供支持。

     

    执行integration-test的Maven命令如下:

    mvn verify

    或者

    mvn verify -Dit.skip=false

     

    参考链接:

    http://docs.spring.io/spring-boot/docs/1.5.4.RELEASE/maven-plugin/
    https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html
     

    展开全文
  • setup maven plugin connection

    千次阅读 2018-06-30 20:12:50
    setup maven plugin connectiondiscover and map eclipse plugins to maven plugin goal executions今天在创建maven工程时遇到了一个问题,工程在创建后有如图的报错,而且工程在创建后的也有很大的不同,丢失了很多的...

    setup maven plugin connection

    discover and map eclipse plugins to maven plugin goal executions

    今天在创建maven工程时遇到了一个问题,工程在创建后有如图的报错,而且工程在创建后的也有很大的不同,丢失了很多的文件,问了下度娘居然没有相关的解决方法,所以在自己解决后记录分享下

    主要原因是在之前有个项目报错,而又一直找不到解决的办法,所以把.m2文件给全删掉了 + 昨晚在给项目加载jar包时网络出了点问题,而导致的结果就是......所以我又把.m2文件删除了,找了个网络环境好一些的重新下载了一遍就OK了

    所以总结下:在maven本地仓库.m2文件下,不仅仅有我们在使用项目时导入的jar包,还有一些是我们创建maven时所必须的配置文件等等,而且maven仓库的文件,(可能应该是)是根据文件名来判断文件是否存在的,如果我们在导包时由于网络环境等原因导致下载中断,就会报错,因为我们的配置文件是不全的.

    这是在重新下载.m2后之前报错的文件:



    展开全文
  • B库很长时间在执行Downloading plugins for,如果中途退出了idea,插件没有下载完,再次进入idea,会出现unresolved plugin的报错 分析: 这个问题可以通过两个方面来解决: 1、更改仓库地址,提高下载速度,一...

    最近在写一个项目的时候,有两个module,A是一个Spring boot,B是一个没有使用框架的module。

    问题一:

    B库很长时间在执行Downloading plugins for,如果中途退出了idea,插件没有下载完,再次进入idea,会出现unresolved plugin的报错

    这里写图片描述

    分析:

    这个问题可以通过两个方面来解决:
    1、更改仓库地址,提高下载速度,一运行,很快就下载完成。
    2、重新下载,需要等待较长的时间

    解决:

    1、解决下载慢的问题

    1、设置其他的仓库地址,或者其他地方下载,可以下载快一些。如何设置可以查看这里

    2、重新下载

    这里写图片描述

    在上面的路径中,找到对应包名路径下的 .lastUpdated文件,全部找出来删除,之后reimport,就可以开始下载

    问题二:

    A B 两个module 的maven plugin中各个插件的版本竟然不一样。

    这里写图片描述

    于是产生了两个问题

    • maven plugin中各个插件的版本控制是在哪里

    • 解决下载慢的问题

    • unresolved plugin

    分析:

    一、Maven Plugin中各个插件的版本控制

    设置插件版本:

    Plugin的插件版本是可以通过pom.xml文件进行控制,其中还可以指定编译java版本,下面介绍三种不同的设置方式:

    1、设置maven-resources-plugin插件的版本为2.4.3。其他插件版本设置类似

    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
    </dependency>
    

    2、设置maven-compiler-plugin插件版本为3.1,指定编译java版本为1.8。其他插件版本设置类似

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    3、设置maven-compiler-plugin插件版本为3.7.0,指定编译java版本为1.8。其他插件版本设置类似

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
    </properties>
    

    关于各个插件的具体作用,请查看项目管理插件maven-plugins

    二、为什么A B两个Module plugin版本不一致

    A Module spring boot 项目

    spring boot 项目中的plugin版本是在框架中定义的,经过我的查找,终于找到了声明版本的pom.xml文件

    从下面开始:

    <parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.0.0.RELEASE</version>
    		<relativePath/> <!-- lookup parent from repository -->
    	</parent>
    

    spring-boot-starter-parent——>spring-boot-maven-plugin——>spring-boot-loader-tools——>spring-boot-tools——>spring-boot-dependencies

    在这个spring-boot-dependencies pom.xml文件中,找到了一下代码,瞬间豁然开朗

    <properties>
    	...
       <maven-install-plugin.version>2.5.2</maven-install-plugin.version>
        ...
    </properties>
    

    其中省略了很多很多,看到这里maven-install-plugin的版本是2.5.2、和上图中的版本一致

    B Module 项目

    如果没有指定plugin的版本,那么系统会使用默认的版本,默认版本是由maven控制的,具体在这里https://maven.apache.org/plugins/index.html查看

    例如查看install-plugin的版本https://maven.apache.org/plugins/maven-install-plugin/install-mojo.html,版本是2.5.2,和上面显示的一致

    参考:
    maven提示错误,unresolved plugin解决方案
    在pom.xml文件中指定编译的版本
    显式指定maven插件的版本号
    运行maven插件的时候如何指定版本?
    maven的pom报plugins错误的解决方法
    【MAVEN】项目管理插件maven-plugins
    maven项目建立pom.xml报无法解析org.apache.maven.plugins:maven-resources-plugin:2.4.3
    解決 IDEA Create Maven Project 卡在 Downloading plugins for …
    Intellij IDEA Maven 下载慢,需要这样设置配置文件。

    展开全文
  • Versions maven plugin 修改版本

    万次阅读 2017-10-23 10:20:10
    Versions maven plugin 修改版本 代码经过长期修改后,版本号却从没有推进,导致个别release稳定版的模块更新代码之后,其他开发机器并不会自动更新本地依赖包。并使主干针对某分支的修改也同步到其他分支。 所以...

    Versions maven plugin 修改版本

    代码经过长期修改后,版本号却从没有推进,导致个别release稳定版的模块更新代码之后,其他开发机器并不会自动更新本地依赖包。并使主干针对某分支的修改也同步到其他分支。
    所以,此文档描述如何使用versions maven plugin插件,批量修改项目各模块的版本号,灵活推进或回退版本,避免主干每次更新代码,立即对所有分支产生影响。

    • maven环境搭建

    • 版本控制

    • 参数介绍

    • Versions maven plugin


    maven环境搭建

    安装maven

    安装maven超,总共分四步:

    1.下载 Maven ,其实就是一个压缩包,解压一下

    这里写图片描述

    2.配置环境变量

    有两个环境变量可以配置:

    MAVEN_HOME = D:\maven\apache-maven-3.2.3(maven目录)
    MAVEN_OPTS = -Xms128m -Xmx512m(可选)

    3.在path变量末尾加入“%MAVEN_HOME%\bin;”。

    以上MAVEN_HOME 是必须要配置的,如果想让 Maven 跑得更快点,可以根据自己的情况来设置 MAVEN_OPTS。
    这里写图片描述

    4.最后,验证是否安装成功

    打开 cmd,输入:

    mvn -v

    我想您一定会看到一些信息,如下图所示:
    这里写图片描述

    Maven 安装成功!


    版本控制

    修改全模块版本号

    修改版本的时候,必须规范模块中pom.xml文件的编写,显式声明其父子节点信息(<parent></parent>|<modules></modules>),需要修改全部模块的版本号为1.0.1-SNAPSHOT,可以在最顶层的根目录,如产品主干在src下,cmd进入根目录,运行命令:

    mvn versions:set -DoldVersion=* -DnewVersion=1.0.1-SNAPSHOT -DprocessAllModules=true -DallowSnapshots=true

    这里写图片描述

    修改后输入:

    mvn clean install -DskipTests

    Maven开始编译打包,请耐心等待,编译完成后,查看结果是否编译成功:

    这里写图片描述

    成功后,输入:

    mvn dependency:tree -Dverboss -Dincludes=${project.groupId}:${project.artifactId}

    检查工程的依赖树是否全部依赖了1.0.1-SNAPSHOT的base模块:

    这里写图片描述

    如果全部模块版本号都改为了:1.0.1-SNAPSHAOT,即修改成功。
    若修改失败,可是使用命令回退版本号:

    mvn versions:revert

    若确认版本,可使用命令:

    mvn versions:commit

    修改版本所产生的backup文件会自动删除。

    修改模块版本

    若开需要推进某模块版本号,或有问题需要回退某模块的版本,或者区域分支想更新某模块为新版本,例如修改base模块的版本号为1.0.1-SNAPSHOT,cmd命令行进入模块目录。

    运行命令:

    mvn versions:set -DnewVersion=1.0.1-SNAPSHOT -DprocessAllModules=true -DallowSnapshots=true

    即可修改该模块及依赖该模块的版本号为1.0.1-SNAPSHOT,其中参数-DallowSnapshots=true,表示允许release版修改为snapshot版。
    加上参数-DprocessAllModules=true表示该模块下的子模块及依赖其的版本号都改成1.0.1-SNAPSHOT。

    3.3.修改指定模块版本号

    如果想修改指定模块的版本号即整个模块中依赖其的版本号,比如groupId:{artifact}的版本号修改为1.0.2-SNAPSHOT,可以运行命令:

    mvn versions:set -DgroupId=${groupId} -DartifactId=${artifact} -DoldVersion=* -DnewVersion=1.0.2-SNAPSHOT -DallowSnapshots=true

    其中,artifactId、groupId和version在maven中形成三维坐标以指定模块,而在这里指定-DgroupId=${groupId} -DartifactId=${artifact}
    确定制定修改的模块为${groupId}:${artifact}

    这里写图片描述

    如果不希望修改依赖mongodb的模块也修改mongodb的版本号,可以使用参数-DprocessDependencies=false取消依赖其的修改,从而只修改xxx工程的版本号:

    mvn versions:set -DgroupId=${groupId} -DartifactId=xxx -DoldVersion=* -DnewVersion=1.0.2-SNAPSHOT -DallowSnapshots=true -DprocessDependencies=false

    参数介绍

    |参数 |默认值 |说明 |
    |allowSnapshots |false |是否更新-snapshot快照版|
    |artifactId |${project.artifactId} |指定artifactId |
    |generateBackupPoms |true |是否备份pom文件 |
    |groupId |${project.groupId} |指定groupId |
    |newVersion | |设置的新版本号 |
    |nextSnapshot |false |更新版本号为下一个快照版本号|
    |oldVersion |${project.version} |指定需要更新的版本号可以使用缺省‘*’|
    |processAllModules |false |是否更新目录下所有模块无论是否声明父子节点|
    |processDependencies |true |是否更新依赖其的版本号|
    |processParent |true |是否更新父节点的版本号|
    |processPlugins |true |是否更新插件中的版本号|
    |processProject |true |是否更新模块自身的版本号|
    |removeSnapshot |false |移除snapshot快照版本,使之为release稳定版|
    |updateMatchingVersions |true |是否更新在子模块中显式指定的匹配版本(如/项目/版本)。|

    Versions maven plugin插件

    对于versions maven plugin插件的其他用法可以参考:

    http://www.mojohaus.org/versions-maven-plugin/index.html

    展开全文
  • eclipse Maven plugin 配置

    千次阅读 2013-07-06 14:49:18
    Eclipse中Maven plugin的安装。
  • 利用Swagger Maven Plugin生成Rest API文档

    万次阅读 2016-03-06 23:49:21
    利用Swagger Maven Plugin生成Rest API文档 Swagger Maven Plugin This plugin enables your Swagger-annotated project to generate Swagger specs and customizable, templated static documents...
  • Build Helper Maven Plugin插件概述

    千次阅读 2016-10-11 23:31:53
    Build Helper Maven Plugin是Mojohaus组织提供的一个Maven插件,以辅助Maven构建的生命周期。 1.官网 http://www.mojohaus.org/build-helper-maven-plugin/index.html 2.当前版本1.12 2016.7发布 3.主要goals ...
  • Idea Maven plugin 红色波浪线问题

    千次阅读 2019-10-31 16:23:27
    如果参考其他博客没有解决的话,可以参考如下方式: 1. 配置问题 出现红线原因可能是idea中库的路径没有配置好,这一点博客上会有解决的方式,而且比较多,这里就不赘述,参考...Maven plugin下载地址 假设我们这...
  • setup maven plugin connection discover and map eclipse plugins to maven plugin goal executions 问题:maven 缺包 解决:下载缺失的包放入maven本地仓库。或者将他人完好的本地仓库拷贝过来。 ...
  • maven plugin configuration

    千次阅读 2019-06-06 14:02:07
    <!-- 编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> ...
  • 今天创建一个maven项目的时候弹出了setup maven plugin connection,然后有两个选择,我们直接选择auto select继续下一步,然后等待一下,把此页面关掉。 然后选择我们创建的报错项目,点击鼠标右键,选择run as->...
  • 使用appassembler-maven-plugin 打包自定义目录1.Pom中添加 <plugin> <artifactId>maven-resources-plugin <id>copy-resources</id>
  • maven plugin实现方式

    千次阅读 2017-11-28 14:24:02
    创建一个maven项目 artifactId的命名 {执行域名}-maven-plugin 修改打包方式 <packaging>maven-plugin添加依赖包 <groupId>org.apache.maven <artifactId>maven-plugin
  • 之前用的好好的maven,今天早上打开新建了一个maven项目,结果报错:Discover and map Eclipse plugins to Maven plugin goal executions。 仔细想了想,报错之前我在settings文件配置了阿里云镜像 注释了镜像代码后...
  • Maven plugin版本查找

    千次阅读 2019-02-20 10:36:38
    1.找到本地maven repository的路径 2.maven各个plugins就保存在org\apache\maven\plugins下面 参考官方文档
  • Build Number Maven Plugin的使用方法

    千次阅读 2011-08-23 23:07:36
    Build Number Maven Plugin的使用方法 1. Build Number Maven Plugin用于获取svn的版本及分支目录,可以将它们用于应用中 2.先在maven的setting.xml中添加仓库,用于下载该插件: codeh
  • Spring Boot Maven Plugin -- repackage目标

    千次阅读 2017-09-14 10:38:08
     Spring Boot Maven Plugin插件提供spring boot在maven中的支持。允许你打包可运行的jar包或war包。  插件提供了几个maven目标和Spring Boot 应用一起工作。总的有: spring-boot:repackage spring-boot:run ...
  • 请问各位大神,pom 中 build -> plugins -> plugin -> executions 下面的execution绑定的phase和goals是表示下面的哪一种: 1. 执行executions下面申明的其中一个phase的时候在goal阶段执行这个插件。 2. 执行这个...
  • jetty 7 maven plugin配置

    千次阅读 2009-10-27 23:43:00
    jetty版本升级到7了,jetty 7 的maven plugin的配置较6发生了一些变化,如下: 1. pom配置 maven-jetty-plugin改成jetty-maven-plugin connector implementation改成org.eclipse.jetty.server.nio....
  • 在Windows下用Myeclipse一直用maven用的好好的,在Linux下Eclipse用maven老是报错:Discover and map Eclipse plugins to Maven plugin goal executions(提示两个错误与compile、test-compile有关)。 度娘上查了...
  • maven plugin execution的用法

    万次阅读 2019-06-06 17:29:32
    [...] maven-antrun-plugin 1.8 package <!-- 将任务Ant任务放在这里,还可以在这里添加一个build.xml文件...
  • Frontend maven plugin

    千次阅读 2016-03-08 14:32:54
    plugins> plugin> groupId>com.github.eirslettgroupId> artifactId>frontend-maven-pluginartifactId> https://repo1.maven.org/maven2/com/github/eirslett/frontend-maven-
  • Spring Boot Maven plugin 打包应用 Java SE 项目通常会用来封装工具类,此时如果要打包(Jar包),建议使用 Maven 更加简单,本文不做描述 Java SE 项目如果使用了awt、swing,Java FX,则可以用来做GUI程序;否则...
  • IntelliJ maven plugin 依赖问题的解决

    千次阅读 2020-03-30 09:41:39
    1、在~/.m2/repository/中找到有依赖问题的plugin,删除 2、在IntelliJ中重新导入Maven(下图所示最左边的循环图标),自动解决依赖
  • Maven plugin 引入问题

    千次阅读 2017-03-24 14:34:44
    1、NoPluginFoundForPrefixException 在maven运行中找不到指定的插件 ... This can happen when invoking a plugin from the command l
  • Maven Plugin fork 在 pom.xml中的作用

    千次阅读 2020-09-30 10:29:25
    使用Spring-boot 的热加载 devtools开发工具时,团队中有些同事的电脑会不生效。无意中发现有人给了这样一个解决方案: <plugin> <groupId>...spring-boot-maven-plugin</artifactId>
  • maven项目中使用 Versions Maven Plugin 支持 org.codehaus.mojo versions-maven-plugin 2.3 然后运行mvn命令 ,获取更新信息 mvn versions:display-dependency-updates
  • maven plugin的execution出错

    千次阅读 2014-06-25 14:49:20
    Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-dependency-plugin:2.7:copy... 错误如上,有介绍解决方法        org.eclipse.m2e

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 234,728
精华内容 93,891
关键字:

mavenplugin