Grails - 构建的最小安装

时间:2013-04-15 00:20:15

标签: grails build gorm

我们有一个定义的平台环境,其中包含特定的Java,Ant和Subversion版本。我们的想法是,拥有此平台的人可以检查我们的存储库中的任何项目,运行构建命令,并且可以在不下载任何软件的情况下构建该项目,或者进行任何特定设置以使构建工作。

这主要是为了我个人的方便(毕竟,我定义了这个平台)。我运行Jenkins服务器,并希望能够构建任何项目而无需经历很多错误。 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。另外,我必须记录该项目需要特殊安装以及如何完成以及所有其他依赖项。

2 个答案:

答案 0 :(得分:1)

如果您的Grails版本足够新(2.1或更新版本),实际上有一个内置命令可以生成一个包装脚本,无需安装Grails即可使用,完全符合您的提及。

文档说:

  

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

请参阅此处的完整文档:http://grails.org/doc/2.1.0/guide/single.html#wrapper

答案 1 :(得分:0)

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

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

一旦所有基本依赖项都存在,创建WAR所需的只是运行mvn install,前提是Apache Maven安装在构建框中。

    <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>