den*_*kin 145 continuous-integration maven jenkins
我们需要能够在某些环境中跳过子模块.
有问题的模块包含集成测试,需要半小时才能运行.因此我们希望在构建CI服务器时包含它,但是当开发人员在本地构建(并且测试运行)时,我们希望跳过该模块.
有没有办法在配置文件设置中执行此操作?我已经做了一些谷歌搜索,并在这里查看其他问题/答案,并没有找到一个很好的解决方案.
我想一个选项是pom.xml完全从父项中删除该子模块,只需在我们的CI服务器上添加另一个项目来构建该模块.
建议?
Ale*_*uil 199
Maven版本3.2.1添加了这个功能,你可以使用-pl开关(快捷键为--projects列表)与!排除某些子模块.
mvn -pl '!submodule-to-exclude' install
mvn -pl -submodule-to-exclude install
Run Code Online (Sandbox Code Playgroud)
小心打击角色!是一个特殊的字符,所以你要么必须单引号(就像我做的那样)或者用反斜杠字符来转义它.
排除多个模块的语法与包含相同
mvn -pl '!submodule1,!submodule2' install
mvn -pl -submodule1,-submodule2 install
Run Code Online (Sandbox Code Playgroud)
编辑 Windows似乎不喜欢单引号,但它在bash中是必要的; 在Windows中,使用双引号(感谢@awilkinson)
mvn -pl "!submodule1,!submodule2" install
Run Code Online (Sandbox Code Playgroud)
        Rag*_*ram 142
当然,这可以使用配置文件完成.您可以在父pom.xml中执行以下操作.
  ...
   <modules>
      <module>module1</module>
      <module>module2</module>  
      ...
  </modules>
  ...
  <profiles>
     <profile>
       <id>ci</id>
          <modules>
            <module>module1</module>
            <module>module2</module>
            ...
            <module>module-integration-test</module>
          </modules> 
      </profile>
  </profiles>
 ...
Run Code Online (Sandbox Code Playgroud)
在您的CI中,您将使用ci配置文件运行maven ,即mvn -P ci clean install 
sku*_*uro 38
可以通过指定-pl命令行参数来决定要构建哪些reactor项目:
$ mvn --help
[...]
 -pl,--projects <arg>                   Build specified reactor projects
                                        instead of all projects
[...]
Run Code Online (Sandbox Code Playgroud)
它以下列形式之一接受以逗号分隔的参数列表:
[groupId]:artifactId因此,给出以下结构:
project-root [com.mycorp:parent]
  |
  + --- server [com.mycorp:server]
  |       |
  |       + --- orm [com.mycorp.server:orm]
  |
  + --- client [com.mycorp:client]
Run Code Online (Sandbox Code Playgroud)
您可以指定以下命令行:
mvn -pl .,server,:client,com.mycorp.server:orm clean install
Run Code Online (Sandbox Code Playgroud)
建立一切.删除列表中的元素以仅构建您喜欢的模块.
编辑:正如blackbuild指出的那样,从Maven 3.2.1开始,你有一个新的-el标志,从反应堆中排除项目,类似于   -pl:
此处给出的命令行使用答案目前不适用于较新版本的 maven(至少 3.8)您还需要添加 ' : '
mvn -pl '!:mymodule' install
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           90282 次  |  
        
|   最近记录:  |