0

我们定义了一个平台环境,其中包括特定的 Java、Ant 和 Subversion 版本。这个想法是,拥有这个平台的人可以签出我们存储库中的任何项目,运行构建命令,并且无需下载任何软件或进行任何特定设置即可构建该项目以使构建工作。

这主要是为了我个人方便(毕竟我定义了这个平台)。我运行 Jenkins 服务器,并希望能够构建任何项目而无需经历很多 conniptions。Jenkins 应该能够在没有任何特定说明或环境设置的情况下进行检查和构建。

如果需要特殊产品,我通常会要求将该产品包含在项目的目录结构中。例如,如果一个项目依赖于 Ant-Contrib 来构建,则antcontrib.jar应该在项目中,并且<taskdef>应该指向项目中的那个 jar。

我们有一个 Grails 项目,我希望有某种方法可以在该项目中包含一个最小的 Grails 安装,以便进行构建。我只需要运行以下命令:

  • grails clean
  • grails war

我知道出于开发原因,您可能需要完整的 Grails 安装,但我只对构建本身感兴趣。

我想在项目中安装 Grails,但我下载了 Grails,在 grails/dist 文件夹中,有 33 个Grails jar。在该lib文件夹下,有 300 多个罐子。在该src文件夹下,还有另外 33 个Grails jar。这有点太多了,不能作为结帐的一部分包含在项目中,这样我就可以进行构建了。

是否有一个紧凑的子集可用于运行构建?

如果没有,我将不得不在我们的构建服务器上安装 Grails。这不是什么大问题,但这确实意味着任何想要构建这个项目的人都必须首先安装 Grails。另外,我必须记录该项目需要特殊安装以及它是如何完成的以及所有其他依赖项。

4

2 回答 2

1

如果您的 Grails 版本足够新(2.1 或更高版本),实际上有一个内置命令可以生成包装脚本,无需安装 Grails 即可使用,这正是您提到的目的。

文档说:

Grails Wrapper 允许构建 Grails 应用程序,而无需安装 Grails 并配置 GRAILS_HOME 环境变量。包装器包括一个小的 shell 脚本和几个小的引导 jar 文件,这些文件通常会与项目的其余部分一起签入源代码控制。第一次执行包装器时,它将下载并配置 Grails 安装。这个包装器使设置开发环境、配置 CI 和管理对 Grails 未来版本的升级变得更加简单。当应用程序升级到 Grails 的下一个版本时,包装器会更新并签入源代码控制系统,并且下次开发人员更新他们的工作区并运行包装器时,他们将自动使用正确的 Grails 版本。

在此处查看完整的文档:http: //grails.org/doc/2.1.0/guide/single.html#wrapper

于 2013-04-15T02:45:26.687 回答
0

我创建了一个 pom 来使用 .mavenize 我的测试 grails 应用程序create-pom。它看起来像下面。需要注意的关键事项:

  • Grails 版本可以设置您需要的任何版本。无需安装 Grails。Maven 会相应地拉取依赖项。
  • grails-dependency请注意将提取 grails 需要的基本项目的依赖项。
  • 请注意插件部分中的 Maven 插件grails-maven-plugin。这个插件有助于在 Grails 应用程序中运行 maven 生命周期。
  • 我们还fork为这个 grails 应用程序构建提供了 JVM 选项,而不是在需要时使用 maven 重载 JVM。

mvn install一旦所有必要的依赖项都完成了,您只需在构建框中安装 Apache Maven即可运行创建 WAR 。

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example.test</groupId>
    <artifactId>TestGrailsApp</artifactId>
    <packaging>grails-app</packaging>
    <version>0.1</version>
    <name>TestGrailsApp</name>
    <description>TestGrailsApp</description>

    <properties>
        <grails.version>2.2.0</grails.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.grails</groupId>
            <artifactId>grails-dependencies</artifactId>
            <version>${grails.version}</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.grails</groupId>
            <artifactId>grails-test</artifactId>
            <version>${grails.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.grails</groupId>
            <artifactId>grails-plugin-testing</artifactId>
            <version>${grails.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.grails.plugins</groupId>
            <artifactId>tomcat</artifactId>
            <version>${grails.version}</version>
            <scope>provided</scope>
            <type>zip</type>
        </dependency>

    </dependencies>

    <build>
        <pluginManagement />

        <plugins>
     ...
            <plugin>
                <groupId>org.grails</groupId>
                <artifactId>grails-maven-plugin</artifactId>
                <version>${grails.version}</version>
                <configuration>
                    <!-- Whether for Fork a JVM to run Grails commands -->
                    <fork>true</fork>
                </configuration>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>
.....

</project>
于 2013-04-15T01:35:07.207 回答