【问题标题】:Build a site zip with Maven使用 Maven 构建站点 zip
【发布时间】:2016-02-04 19:20:32
【问题描述】:

实际上,我生成了一个包含我的项目文档的 maven 站点。它运行良好,事实上,如果运行良好以至于我的客户希望将该站点作为可交付成果(出于明显的文档目的)。

如何告诉 Maven 构建整个站点的 zip 并将其部署到我的工件管理器 (Nexus)?我尝试了几件事,但如果我理解正确,部署工件和生成站点使用不同的生命周期,并且站点生成发生在部署工件之后..

我显然可以从站点部署期间部署的位置获取生成的站点,但我非常感谢一种自动和集中的方式...

PS:不允许客户访问我们的内部网站。

【问题讨论】:

    标签: maven maven-3 pom.xml maven-site-plugin


    【解决方案1】:

    这是一个委托给Maven profile 的工作解决方案,用于隔离行为(并加速正常构建),但如果需要,也可以将其集成到默认构建中(尽管不推荐)。

    <profiles>
        <profile>
            <id>site-zip</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-site-plugin</artifactId>
                        <version>3.4</version>
                        <executions>
                            <execution>
                                <id>pack-site</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>site</goal>
                                    <goal>jar</goal>
                                </goals>
                                <configuration>
                                    <attach>false</attach>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
    
                    <plugin>
                        <groupId>com.coderplus.maven.plugins</groupId>
                        <artifactId>copy-rename-maven-plugin</artifactId>
                        <version>1.0.1</version>
                        <executions>
                            <execution>
                                <id>rename-file</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>rename</goal>
                                </goals>
                                <configuration>
                                    <sourceFile>${project.build.directory}/${project.build.finalName}-site.jar</sourceFile>
                                    <destinationFile>${project.build.directory}/${project.build.finalName}-site.zip</destinationFile>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
    
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>build-helper-maven-plugin</artifactId>
                        <version>1.10</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>attach-artifact</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <artifacts>
                                        <artifact>
                                            <file>${project.build.directory}/${project.build.finalName}-site.zip</file>
                                            <type>zip</type>
                                            <classifier>site</classifier>
                                        </artifact>
                                    </artifacts>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    

    配置文件实际在做什么:

    因此,正在运行

    mvn clean install -Psite-zip
    

    还将在您的本地 Maven 缓存中安装压缩站点。然后deploy 阶段将在您的目标 Maven 存储库上执行相同的操作。

    请注意,Maven Site Plugin 和 Copy Plugin 必须按照上述顺序声明,以便在同一阶段遵循所需的流程。

    还要注意,如果zip 不是一个强要求,那么您可以跳过复制和构建助手执行,而只使用 Maven 站点执行。默认情况下,如果站点已附加到构建中,则创建的jar (因此它将自动安装和部署)。为了获得 zip,我们必须禁用此行为 (&lt;attach&gt;false&lt;/attach&gt;) 并通过 Build Helper 插件重新附加它。

    生成的压缩包自动有一个classifier,在本例中为site

    【讨论】:

      【解决方案2】:

      您可以使用maven-site-plugin

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-30
        • 2017-05-07
        相关资源
        最近更新 更多