Grails-构建的最低安装量

Grails-构建的最低安装量,grails,build,gorm,Grails,Build,Gorm,我们定义了一个平台环境,其中包括特定的Java、Ant和Subversion版本。其想法是,使用该平台的人可以签出我们存储库中的任何项目,运行构建命令,并且可以构建该项目,而无需下载任何软件,也无需为构建工作进行任何特定设置 这主要是为了我个人的方便(毕竟,我定义了这个平台)。我运行Jenkins服务器,希望能够构建任何项目,而无需进行大量的连接。Jenkins应该能够在没有任何特定说明或环境设置的情况下进行签出和构建 如果需要特殊的产品,我通常会要求将该产品包含在项目的目录结构中。例如,如果项

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

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

如果需要特殊的产品,我通常会要求将该产品包含在项目的目录结构中。例如,如果项目依赖Ant Contrib进行构建,则
antcontrib.jar
应位于项目中,并且
应指向项目中的该jar

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

  • grails clean
  • grails-war
我理解出于开发原因,您可能需要一个完整的Grails安装,但我只对构建本身感兴趣

我曾考虑在项目中安装Grails,但我下载了Grails,在Grails/dist文件夹中,有33个GrailsJAR。在
lib
文件夹下,有300多个jar。在
src
文件夹下,还有33个GrailsJAR。这有点太多了,不能将其作为签出的一部分包含在项目中,这样我就可以进行构建了

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


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

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

  • Grails版本可以设置为您需要的任何版本。不需要安装Grails。Maven会相应地提取依赖项
  • 注意依赖项
    grails依赖项
    ,它将提取grails需要的基本项
  • 注意插件部分中的maven插件
    grailsmaven插件
    。该插件在Grails应用程序中运行maven lifecycle
  • 我们还可以选择
    fork
    这个grails应用程序构建的JVM,而不是在需要时使用maven重载JVM
一旦完成了所有基本依赖项,创建WAR所需的就是运行
mvn install
,前提是在构建框中安装了ApacheMaven

    <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>
4.0.0
com.example.test
TestGrailsApp
grails应用程序
0.1
TestGrailsApp
TestGrailsApp
2.2.0
org.grails
grails依赖项
${grails.version}
聚甲醛
org.grails
颗粒试验
${grails.version}
测试
org.grails
grails插件测试
${grails.version}
测试
org.grails.plugins
雄猫
${grails.version}
假如
拉链
...
org.grails
GrailsMaven插件
${grails.version}
真的
真的
.....

如果您的Grails版本足够新(2.1或更高版本),那么实际上有一个内置命令来生成包装器脚本,该脚本可以在不安装Grails的情况下使用,完全符合您提到的目的

文件说:

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


请参阅此处的完整文档:

我的工作场所有点陈旧,但我们使用Maven 2.2.1和本地Nexus存储库实现了同样的功能。我们不需要在构建服务器中安装grails,工件会自动延迟地拉过来。我使用Grails 2.2.0,其中工件被分解成更小的部分,如
Grails core
Grails hibernate
Grails-i18n
,Maven从
Grails依赖项
中提取pom依赖项变得更容易。别忘了,
Grails Maven插件
完成其余部分。我们在这里使用Ant/Ivy,我们连接到一个Maven存储库。你是说Maven可以构建Grails吗?或者,你是说Maven可以下载所有这些JAR吗?Maven构建可以同时下载这两种JAR。Grails Maven插件必须用于在Grails应用程序中引入Maven生命周期。Maven还可以从当地的m2回购协议中获得JAR。要测试相同的情况,请在ap中使用grails'
createpom
命令