编写一个插件执行程序,该程序将在安装阶段运行,但不会在部署阶段运行

最后发布: 2014-11-26 03:39:00


问题

我的项目中有一些架构。 当我运行mvn deploy命令时。 它将我的架构复制到中央服务器。

对于模式更改的单元测试,我们必须先将其上载到服务器,然后才能在项目中使用它。 在本地设置架构后,我们还必须运行mvn deploy命令将其上传到本地服务器,因为现有pom中没有安装阶段的配置。

为此,我在安装阶段编写了类似的复制执行。 以下是插件配置的快照:

     <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>xsd-publish</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${xsd.publish.location}\event</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <includes>
                                        <include>**/*.xsd</include>
                                    </includes>
                                </resource>
                            </resources>
                            <overwrite>true</overwrite>
                        </configuration>
                    </execution>
                    <execution>
                         <id>copy-xsd-local</id>
                         <phase>install</phase>
                          <goals>
                            <goal>copy-resources</goal>
                             </goals>
                              <configuration>
                                <outputDirectory>\\localhost\xsd\event</outputDirectory>
                                <resources>
                                  <resource>
                                    <directory>src/main/resources</directory>
                                    <includes>
                                        <include>**/*.xsd</include>
                                    </includes>
                                  </resource>
                                </resources>
                                <overwrite>true</overwrite>
                              </configuration>
                     </execution>
                </executions>
            </plugin>

当我在本地计算机上运行此配置时,它运行正常且符合预期。 当我尝试使用TeamCity构建项目时,它失败了,因为team city有它自己的servr,它没有名为xsd的文件夹。 理想情况下,当我从Team city运行它时,我什至不想调用此插件执行。

有什么建议吗?

teamcity maven-3 maven-resources-plugin
回答

您可以使用环境条目激活的不同概要文件

在构建服务器中定义XSDTeamCity env条目。 然后使用两个配置文件,每个配置文件都有相应的执行。 配置文件的激活如下所示:

<profiles>
    <profile>
        <id>development_profile</id>
        <activation>
            <property>
                <name>!XSDTeamCity</name>
            </property>
        </activation>
        <!--plugin executions here will run only on dev server-->
    </profile>
    <profile>
        <id>teamcity_profile</id>
        <activation>
            <property>
                <name>XSDTeamCity</name>
            </property>
        </activation>
        <!--plugin executions here will run only on build server-->
    </profile>
</profiles>

还有一件事:例如,您可以轻松地针对jar文件中的XSD验证XML。 为什么需要将此XSD复制到任何地方?