Maven的联合网站/部署的目标(Combined site/deploy goal for Mav

2019-09-20 23:51发布

当运行一个Maven构建CI服务器上,我产生了网站发布的文件和报告,并部署神器供其他项目使用快照库。 要做到这一点,我跑了如下目标:

mvn clean site deploy

这意味着单元测试的部署生命周期运行两次 ,一次为网站的生命周期和一次。 如果我配置站点的目标绑定到标准的生命周期测试仍在运行两次,运行网站的目标总是导致检测,因为@requiresDependencyResolution测试注释的运行。 这是好的,如果你只创建网站,但在部署的背景下,大大增加了制作时间没有好处。

我有一个涉及复制SiteMojo(和所需的家长),以一个新的插件以及除去副本@requiresDependencyResolution测试注释的解决方法。

这种改进的魔力会生成报表,而无需迫使测试再次运行,但我宁愿不涉及网站插件的任何黑客攻击的解决方案。 有没有办法来抑制requiresDependencyResolution注解?

Answer 1:

我很惊讶这个工作-在@requiresDependencyResolution test标签实际上不触发测试正在建造-这应该是的,你已经包括了一个报告。 通常情况下,我建议运行的网站,并构建在CI单独Maven的执行,因此您可以在您的构建得到快速反馈和发布成功,只有当最新的网站。

另一种方法是运行它mvn clean deploy site ,并选择report-only为魔力surefire-report-maven-plugin (这通常是再次运行测试报告)。 这将使用以前的测试结果。 当然,另一种选择是完全禁用该报告,因为你可能会得到来自其他来源的这些结果如你CI服务器反正。



Answer 2:

我目前的做法是创建从Maven的网站插件相关类型的副本,新的插件。 这些类型是除了改变类型名称,目标名称和去除@requiresDependencyResolution测试注释的相同的标准的版本。

复制的类型有:

org.apache.maven.plugins.site.AbstractSiteMojo
org.apache.maven.plugins.site.AbstractSiteRenderingMojo

父mojos需要这样Maven可以处理基于Javadoc的注释(这不应该被要求对Maven 2.2.0+)。

org.apache.maven.plugins.site.SiteMojo
org.apache.maven.plugins.site.SiteJarMojo

这两个被分别复制为SiteOnlyMojo和SiteJarOnlyMojo,SiteJarOnlyMojo被改变为从SiteOnlyMojo继承。 否则,只有变化是改变目标namess并删除注释。

所以SiteOnlyMojo有:

* @goal site
* @requiresDependencyResolution test

变成:

* @goal site-only

和SiteJarOnlyMojo有:

* @goal jar
* @phase package

变成:

* @goal jar-only
* @phase package

这些类型与artifactId的Maven的站点仅-插件与正确的网站插件声明的依赖性的Maven的插件项目申报。

要使用此我定义配置文件(我不想在每次执行的,只有当-Psite在命令行上声明运行报告),并将其绑定到准备封装阶段(之前的2.1.0,你会有将其绑定到封装相代替)。

<profile>
  <id>site</id>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-site-only-plugin</artifactId>
        <version>1.0.0</version>
        <executions>
          <execution>
            <phase>prepare-package</phase>
            <goals>
              <goal>jar-only</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>


Answer 3:

<build>
    <pluginManagement>
        <plugins>
            ...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>site</goal>
                            <goal>deploy</goal>
                        </goals>
                        <phase>deploy</phase> 
                   </execution>
                </executions>
            </plugin>
            ...
        </plugins>
    </pluginManagement>
</build>

发出“MVN部署”命令时,以及确保测试套件只执行一次,这将自动执行该网站的行动。



文章来源: Combined site/deploy goal for Maven
标签: maven-2