3

公開されていないサードパーティのプラグインがいくつかあります。私と同僚がこれらのプラグインを簡単にインストールできるように、ローカルリポジトリを作成したいと思います。すでにnginxがインストールされているサーバーがあります。ですから、できればそれを使いたいと思います。つまり、私は、Tomcatのような別のWebサーバーをインストールして、grails.org Webインターフェイスのようなものを実行することに熱心ではありません(ドキュメントが「独自のプラグインポータル」で示唆しているように)。

grailsRepo()関数とgetPluginList()に基づいて、次のようにWebサーバー上に「grails」ディレクトリを作成しました。

/grails
- /.plugin-meta
  - /plugins-list.xml
- /grails-my-plugin
  - /tags
    - /RELEASE_1_0_123
      - /grails-my-plugin-1.0.123.zip

プラグインの名前は「my-plugin」で、プラグインのバージョン番号は1.0.123です。

私のplugins-list.xmlは次のようなものです:

<plugins revision="1">
    <plugin latest-release="1.0.123" name="my-plugin">
        <release tag="RELEASE_1_0_123" type="svn" version="1.0.123">
            <title>MyPlugin</title>
            <author>No Author</author>
            <authoremail>no@email</authoremail>
            <description>An example plugin.</description>
            <file>http://mydev.example.com/grails/grails-my-plugin/tags/RELEASE_1_0_123/grails-my-plugin-1.0.123.zip</file>
        </release>
    </plugin>
</plugins>

リポジトリを詳細に構成して、新しいGrailsアプリケーション()を作成し、次の構成が含まれるようにgrails create-app test-app調整しました。grails-app/conf/BuildConfig.groovy

repositories {
  grailsRepo("http://mydev.example.com/grails", "myDevRepo")
}

このGrailsアプリに「my-plugin」プラグインをインストールしようとすると、Webサーバーにリクエストが表示され、Grailsは次のようにリポジトリからダウンロードしようとしたと報告します。

==== myDevRepo: tried

  -- artifact org.grails.plugins#my-plugin;latest.integration!my-plugin.zip:

  http://mydev.example.com/grails/grails-my-plugin/tags/LATEST_RELEASE/grails-my-plugin-[revision].zip

.plugin-meta/plugins-list.xmlGrailsは、リポジトリ用に作成したファイルを読み取ろうとしていないようです。ローカルのGrailsアプリの最小限の構成でこのリポジトリーを機能させるには、何をする必要がありますか?

注:私はGrails1.3.7を使用しています。

4

2 に答える 2

1

irc.freenode.orgの#grailsのcdeszaqにより、次の解決策が見つかりました。

「grailsRepo」タイプのリポジトリレイアウトの使用を忘れてください。それはひどく文書化されておらず、明らかにうまく機能しません。代わりに、Mavenリポジトリーレイアウトを使用してください。

バージョン1.0.5で「foo」という名前のプラグインがあり、「foo-1.0.5.zip」という名前のzipファイルにパッケージ化されていると仮定します。HTTPベースのリポジトリを作成するには、次のようにします。

まず、Webサーバーにディレクトリ構造を作成します。

/grails-maven
-/org
  -/grails
    -/plugins
      -/foo
        -/1.0.5

「foo-1.0.5.zip」ファイルをMD5合計ファイル(md5sum -b foo-1.0.5.zip > foo-1.0.5.zip.md5)とともに、このツリーの最も深いディレクトリに配置します。したがって、次のURLがあります。

http://example.com/grails-maven/org/grails/plugins/foo/1.0.5/foo-1.0.5.zip
http://example.com/grails-maven/org/grails/plugins/foo/1.0.5/foo-1.0.5.zip.md5

grails-mavenWebサーバー構成でディレクトリのディレクトリインデックス出力を有効にします。nginxの場合、次の構成が機能します。

server {
  location ^~ /grails-maven {
    autoindex on;
  }
}

最後に、Grailsアプリのリポジトリを有効にしますBuildConfig.groovy

repositories {
  mavenRepo("http://example.com/grails-maven/")
}

上記を完了するgrails install-plugin fooと、プラグインをGrailsアプリにインストールできるようになります。

于 2012-08-16T18:55:47.650 に答える
0

あなたの探求に対する本当の答えではありません、少しそれは役立つかもしれません...

内部リポジトリとしてservreを使用するのではなく、svnを介して配布するフラットフォルダを使用します。

これは、リポジトリを次のように指定するだけでうまく機能します

repositories {
  flatDir name:'myRepo', dirs:'/path/to/repo'
}

しかし、grails list-pluginは機能しないようです。Grails 1.3.7は、plugins-list.xmlファイルを解決しようとさえしないようです。

プラグインをandという名前のzipファイルとしてドロップする[plugin]-[version].zip [grails]-[plugin]-[version].zip、grailsは、

grails install-plugin [plugin]

この方法でフルパスを指定する必要はありません。なぜ私が2つのコピーをドロップするのか私に聞かないでください-それは私のためにうまくいきます:-(

于 2012-07-06T19:48:10.813 に答える