2013-04-15 24 views
0

我們有一個定義的包含特定Java,Ant和Subversion版本的平臺環境。我們的想法是,擁有此平臺的人可以在我們的存儲庫中檢出任何項目,運行構建命令,並且可以在不下載任何軟件的情況下構建該項目,或者執行任何特定設置以使構建工作。Grails - 構建的最小安裝

這主要是爲了我個人的便利而完成的(畢竟我定義了這個平臺)。我運行Jenkins服務器,並希望能夠構建任何項目而不需要經過許多配置。詹金斯應該能夠做一個結賬和建立沒有任何具體的指示或環境設置。

如果需要特殊產品,我通常會要求將此產品包含在項目的目錄結構中。例如,如果某個項目依賴於Ant-Contrib構建,則antcontrib.jar應位於該項目中,而<taskdef>應指向該項目中的該jar。

我們有一個Grails項目,我希望有一些方法可以在該項目中包含一個最小的Grails安裝,以便構建。所有我必須運行有以下命令:

  • grails clean
  • grails war

我明白,發展的原因,你可能需要一個完整的Grails的安裝,但我在剛興趣建立自己。

我正在考慮在項目中安裝Grails,但是我下載了Grails,而在grails/dist文件夾中,有33 Grails jars。在lib文件夾下,有300多個罐子。在src文件夾下,還有另外33個瓶子。作爲結賬的一部分,在項目中包含太多內容,這樣我就可以進行構建。

是否有可用於運行構建的緊湊子集?

如果沒有,我將不得不在我們的構建服務器上安裝Grails。這不是一個太大的問題,但它的確意味着任何想要構建這個項目的人都必須首先安裝Grails。另外,我必須記錄下這個項目需要一個特殊的安裝,它是如何完成的以及所有其他的依賴關係。

+0

我的工作場所是位老派的,但我們使用Maven 2.2.1和當地的Nexus庫實現相同。我們不需要在構建服務器上安裝Grails,工件會自動被拉下。我使用Grails 2.2.0,其中的工件分解爲像grails-core,grails-hibernate,grails-i18n這樣的小塊,並且Maven更容易將pom依賴從grails-dependency中提取出來。 – dmahapatro

+0

不要忘記,'grails-maven-plugin'完成剩下的工作。 – dmahapatro

+0

我們在這裏使用Ant/Ivy,並且我們連接到一個Maven倉庫。你是否暗示Maven可以做Grails構建?或者,你是否說Maven可以下載所有這些罐子? –

回答

1

如果你的Grails的版本夠新(2.1或更新版本),實際上是一個內置的命令生成一個包裹腳本,可以在無需安裝Grails的使用,正是目的,你提及。

文檔說:

Grails的包裝允許Grails應用程序內置,無需安裝Grails和配置一個GRAILS_HOME環境變量。該包裝包括一個小型shell腳本和一對小型引導程序jar文件,這些文件通常會與源代碼控制一起檢入到項目的其餘部分。包裝首次執行時,它將下載並配置Grails安裝。這個包裝使得設置開發環境,配置CI和管理升級到未來版本的Grails更加簡單。當應用程序升級到Grails的下一個版本時,包裝程序將被更新並簽入到源代碼控制系統中,下次開發人員更新其工作區並運行包裝程序時,它們將自動使用正確版本的Grails。

參閱完整的文檔在這裏:http://grails.org/doc/2.1.0/guide/single.html#wrapper

+0

同意。忘記在我的回覆中也提到這一點。感謝您帶來它。 – dmahapatro

+0

是的,這正是我要找的。謝謝! –

0

我創建了一個pom使用create-pom來實現我的測試grails應用程序。它看起來像下面。重要項目要注意:

  • Grails版本可以設置哪個版本,你需要。無需安裝Grails。 Maven會相應地調用依賴。
  • 請注意依賴項grails-dependency這將拉動grails需要的基本項目。
  • 請注意插件部分中的maven插件grails-maven-plugin。這個插件在Grails應用程序中運行Maven生命週期。
  • 我們還可以選擇fork這個grails應用程序構建的JVM,而不是在需要使用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>