Maven中Module版本号定义在根POM中供其他module使用

一、需求背景

项目中有个API层暴露给使用方使用,内部多个module也在使用,API层变动比较频繁,如果每次都去多个module中修改,比较浪费时间,现希望集中统一管理(只改一处即可)

二、解决方案

插件方式

			  org.codehaus.mojo
              flatten-maven-plugin

三、示例使用地址

https://gitee.com/bgt0314/ShareVersionFromRootPom

四、使用说明

  1. 根pom中定义share版本号
  2. 根pom中加入下边的插件
            <!--share module打包使用 begin-->
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>flatten-maven-plugin</artifactId>
              <version>1.1.0</version>
              <configuration>
                <updatePomFile>true</updatePomFile>
                <flattenMode>resolveCiFriendliesOnly</flattenMode>
              </configuration>
              <executions>
                <execution>
                  <id>flatten</id>
                  <phase>process-resources</phase>
                  <goals>
                    <goal>flatten</goal>
                  </goals>
                </execution>
                <execution>
                  <id>flatten.clean</id>
                  <phase>clean</phase>
                  <goals>
                    <goal>clean</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
            <!--share module打包使用 end--> 
  1. 设置自己的私服地址

  2. 设置API打包插件

 <plugins>
        <plugin>
            <groupId>org.apache.maven.pluginsgroupId>
            <artifactId>maven-source-pluginartifactId>
            <configuration>
                <attach>trueattach>
            configuration>
            <executions>
                <execution>
                    <phase>compilephase>
                    <goals>
                        <goal>jargoal>
                    goals>
                execution>
            executions>
        plugin>
        <plugin>
            <groupId>org.apache.maven.pluginsgroupId>
            <artifactId>maven-deploy-pluginartifactId>
            <version>1.0.0-GHversion>
        plugin>
    plugins>
  1. 打包
  • 切换到要打包的module目录下
C:\Users\Administrator>cd c:\IdeaProjects\ShareVersionFromRootPom\API

c:\IdeaProjects\ShareVersionFromRootPom\API>ls
API.iml  pom.xml  src  target

c:\IdeaProjects\ShareVersionFromRootPom\API>mvn clean deploy
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for shareversionfromrootpom:API:jar:1.0.1-SNAPSHOT
[WARNING] 'version' contains an expression but should be a constant. @ shareversionfromrootpom:API:${share.version}, c:\IdeaProjects\ShareVersionFromRootPom\API\pom.xml, line 15, column 14
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ shareversionfromrootpom:API:${share.version}, c:\IdeaProjects\ShareVersionFromRootPom\API\pom.xml, line 19, column 17
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] --------------------< shareversionfromrootpom:API >---------------------
[INFO] Building API 1.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ API ---
[INFO] Deleting c:\IdeaProjects\ShareVersionFromRootPom\API\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ API ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ API ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to c:\IdeaProjects\ShareVersionFromRootPom\API\target\classes
[INFO]
[INFO] >>> maven-source-plugin:3.2.1:jar (default) > generate-sources @ API >>>
[INFO]
[INFO] <<< maven-source-plugin:3.2.1:jar (default) < generate-sources @ API <<<
[INFO]
[INFO]
[INFO] --- maven-source-plugin:3.2.1:jar (default) @ API ---
[INFO] Building jar: c:\IdeaProjects\ShareVersionFromRootPom\API\target\API-sources.jar
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ API ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory c:\IdeaProjects\ShareVersionFromRootPom\API\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ API ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ API ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ API ---
[INFO] Building jar: c:\IdeaProjects\ShareVersionFromRootPom\API\target\API.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ API ---
[INFO] Installing c:\IdeaProjects\ShareVersionFromRootPom\API\target\API.jar to D:\develop\tools\maven\apache-maven-3.1.0\.m2\repository\shareversionfromrootpom\API\1.0.1-SNAPSHOT\API-1.0.1-SNAPSHOT.jar
[INFO] Installing c:\IdeaProjects\ShareVersionFromRootPom\API\pom.xml to D:\develop\tools\maven\apache-maven-3.1.0\.m2\repository\shareversionfromrootpom\API\1.0.1-SNAPSHOT\API-1.0.1-SNAPSHOT.pom
[INFO] Installing c:\IdeaProjects\ShareVersionFromRootPom\API\target\API-sources.jar to D:\develop\tools\maven\apache-maven-3.1.0\.m2\repository\shareversionfromrootpom\API\1.0.1-SNAPSHOT\API-1.0.1-SNAPSHOT-sources.jar
[INFO]
[INFO] --- maven-deploy-plugin:1.0.0-GH:deploy (default-deploy) @ API ---
[INFO] 成功替换pom文件。
[INFO] --------------------------------------------------
[INFO] MavenProject: shareversionfromrootpom:API:1.0.1-SNAPSHOT @ c:\IdeaProjects\ShareVersionFromRootPom\API\target\pom.deploy.xml
[INFO] deployAtEnd : false
[INFO] skip : false
[INFO] deleteFile : true
[INFO] replacePomFileName : pom.deploy.xml
[INFO] toReplace : ${project.release.version}
[INFO] replaceTo : -SNAPSHOT
Downloading from nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/maven-metadata.xml
Downloaded from nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/maven-metadata.xml (990 B at 3.4 kB/s)
Uploading to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/API-1.0.1-20200616.100903-2.jar
Uploaded to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/API-1.0.1-20200616.100903-2.jar (3.7 kB at 10 kB/s)
Uploading to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/API-1.0.1-20200616.100903-2.pom
Uploaded to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/API-1.0.1-20200616.100903-2.pom (1.4 kB at 4.9 kB/s)
Downloading from nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/maven-metadata.xml
Downloaded from nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/maven-metadata.xml (326 B at 2.7 kB/s)
Uploading to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/maven-metadata.xml
Uploaded to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/maven-metadata.xml (990 B at 3.6 kB/s)
Uploading to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/maven-metadata.xml
Uploaded to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/maven-metadata.xml (326 B at 1.2 kB/s)
Uploading to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/API-1.0.1-20200616.100903-2-sources.jar
Uploaded to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/API-1.0.1-20200616.100903-2-sources.jar (3.2 kB at 11 kB/s)
Uploading to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/maven-metadata.xml
Uploaded to nexus-snapshots: http://baigt.com/nexus/content/repositories/snapshots/shareversionfromrootpom/API/1.0.1-SNAPSHOT/maven-metadata.xml (990 B at 3.7 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  9.065 s
[INFO] Finished at: 2020-06-16T18:09:05+08:00
[INFO] ------------------------------------------------------------------------

你可能感兴趣的:(杂文)