2017-03-25 10 views
1

mavenのプラグインと依存関係を使用するgrails 2.5.3アプリケーションがあります。今では、自分のアプリが使用するすべての依存関係のプロキシとして、会社内のNexusサーバー設定を使用したいと考えています。しかし、以前はNexusを使用していませんでした。そのため、どのように動作するのか少し混乱します。Grailsアプリケーションのためにmavenの代わりにNexusを使用する方法

を使用して私のgrailsアプリ用にPOM.xmlを生成しました。生成されたPOMは、以下のartifactId

<groupId>com.mycompany</groupId> 
<artifactId>myproj</artifactId> 
<packaging>grails-app</packaging> 
<version>1.0.0.R1</version> 

は、その後、私はその後、私はmvn deploy

今、私はhttps://companynextus/content/repositories/myproj/com/mycompany/myproj/1.0.0.R1/

で私の全体のWARファイルやPOMを見ることができますを実行 POM.xml

<distributionManagement> 
    <repository> 
     <id>nexus</id> 
     <name>Nexus Repo</name> 
     <url>https://companynextus/content/repositories/myproj</url> 
    </repository> 
    </distributionManagement> 

に以下を追加しました

この時点で、BuildConfig.groovyを次の場所から変更します。

repositories { 
    inherits true // Whether to inherit repository definitions from plugins 

    grailsPlugins() 
    grailsHome() 
    mavenLocal() 
    grailsCentral() 
    mavenCentral() 
} 

:依存関係を取得grails prod war

解決エラーをしながら

repositories { 
    inherits true // Whether to inherit repository definitions from plugins 

    grailsPlugins() 
    grailsHome() 
    grailsRepo "https://companynextus/content/repositories/myproj/com/mycompany/myproj/1.0.0.R1" 
    mavenRepo "https://companynextus/content/repositories/myproj/com/mycompany/myproj/1.0.0.R1" 
} 

しかし、私はエラーを取得する:アーティファクトorg.grails.pluginsが見つかりませんでした:Tomcatは:ファスナー:8.0。 33 in https://companynextus/content/repositories/myproj/com/mycompany/myproj/1.0.0.R1(https://companynextus/content/repositories/myproj/com/mycompany/myproj/1.0.0.R1) (完全トレースを見るには--stacktraceを使用してください)

+0

この質問のタイトルは少し奇妙です。技術的にはまだMavenを使用していて、Nexusを使用してプロキシやホストアーティファクトを作成するだけです。 – DarthHater

答えて

1

すべての外部mavenリポジトリ(maven central、grails repos)と内部リリースリポジトリをキャッシュするネクサスリポジトリグループ(http://nexushost/content/groups/repo)を作成しました。

デプロイメントに関しては、スナップショット(http://nexushost/content/repositories/snapshots)とリリース用のレポ(http://nexushost/content/repositories/releases/)が1つあります。

これは、Grails 2.5.1を使用したBuildConfigの抜粋です。

def env = System.getenv() + new HashMap(System.properties) 

grails { 
    project { 
     repos { 
      SNAPSHOTS { 
       url = "http://nexushost/content/repositories/snapshots" 
       username = env.NEXUS_DEPLOY 
       password = env.NEXUS_DEPLOY_PASS 
      } 
      RELEASES { 
       url = "http://nexushost/content/repositories/releases/" 
       username = env.NEXUS_DEPLOY 
       password = env.NEXUS_DEPLOY_PASS 
      } 
     } 
    } 
} 


grails.project.dependency.resolver = "maven" 
grails.project.dependency.resolution = { 
    inherits("global") { 
    } 
    repositories { 
     inherits true 

     mavenLocal() 
     mavenRepo('http://nexushost/content/groups/repo') { 
      auth(
        username: env.NEXUS_BUILD, 
        password: env.NEXUS_BUILD_PASS 
      ) 
     } 
     mavenRepo('http://nexushost/content/repositories/snapshots') { 
      auth(
        username: env.NEXUS_BUILD, 
        password: env.NEXUS_BUILD_PASS 
      ) 
      updatePolicy 'always' 
     } 
    } 

//.... 
} 
0

mvn deployコマンドを実行すると、プロジェクトがnexusリポジトリにjarとしてアップロードされますが、それぞれの依存関係は別々にアップロードされません。また、プロジェクトの依存関係をnexusからダウンロードして使用する場合は、依存関係をnexusにもアップロードする必要があります。

ネクサスのようなリポジトリにサードパーティのjarファイルをアップロードする方法の詳細については

https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html

あなたがネクサス2を使用する場合も、UIからこの操作を行うことができます。

関連する問題