【问题标题】:Exclude files while generating war in jenkins在詹金斯中生成战争时排除文件
【发布时间】:2017-07-23 04:06:50
【问题描述】:

我在 jenkins 中使用maven clean install

我的 war 文件包含一个名为“.ebextensions”的文件夹。

我在詹金斯写了三个不同的工作。

一个用于生产,一个用于测试,一个用于开发。

我想在测试环境中生成战争时排除“.ebextensions”目录中的一些文件,并在为开发环境生成战争时排除整个目录。

如何做到这一点?

【问题讨论】:

  • 你如何构建你的战争?蚂蚁/行家/脚本?你能显示复制类的部分脚本吗?
  • 我正在使用 maven,全新安装
  • 那么这不是jenkins 问题..
  • 在詹金斯的工作中,我正在通过清洁和安装
  • 这个文件夹里有哪些根据环境不同的东西?听起来像属性?见github.com/khmarbaise/multienv-maven-plugin

标签: maven svn jenkins


【解决方案1】:

在 pom.xml 中将排除添加到 maven-jar-plugin:

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
      <execution>
        <id>default-jar</id>
        <phase>package</phase>
        <goals>
          <goal>jar</goal>
        </goals>
        <configuration>
          <excludes>
            <exclude>**/ebextensions/*</exclude>
          </excludes>
        </configuration>
      </execution>
    </executions>
</plugin>

如果您需要特定的环境并且 maven 不支持 if 语句, 你可以使用 Ant-contrib 的 if 任务

<configuration>
          <tasks>
            <taskdef resource="net/sf/antcontrib/antcontrib.properties"
              classpathref="maven.plugin.classpath" />
            <if>
              <equals arg1="${env}" arg2="development" />
              <then>
          <excludes>
            <exclude>**/ebextensions/*</exclude>
          </excludes>

              </then>
              <else>
                <echo message="Do not exclude" />
              </else>
            </if>
          </tasks>
        </configuration>

并发送到 maven env 参数为:mvn install -Denv=development

【讨论】:

  • 但必须是他们在生产环境和测试环境。是否可以根据具体环境排除
  • 文件夹名称在 ebextensions 前面包含 .(dot)。因此它没有显示在 eclipse 中,但它存在于工作区中。如果我在 maven jar 插件中排除 .ebextensions,则不排除。如果我排除资产文件夹它工作正常。 (.ebextensions 是与 aws elastic beanstalk 相关的基础设施相关文件夹。我正在尝试在 aws 中部署它。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
相关资源
最近更新 更多