2013-04-23 3 views
6

My Play 2アプリケーションは、より大きなMavenアプリケーションのサブプロジェクトです。 Play 2アプリはその親に依存関係があります - それはそれからデータアクセスを取得します。したがって、アプリケーションのBuildを外部のMavenプロジェクトに依存させたいと思います。Play/SBTアプリをMaven POMに依存させる

は基本的に、私は、この書きたい:

val main = play.Project(appName, appVersion, appDependencies).settings(
    // settings 
).dependsOn(externalPom(baseDirectory(_/"../pom.xml"))) 

をしかし、もちろん、これは有効な構文ではありません。

私はこのような私の play.Project定義しようとした

:私は新しいProjectを定義しようとしました(と思う)オーバーライド原因は独自の例外をロードしないように

を再生するために失敗した

val main = play.Project(appName, appVersion, appDependencies).settings(
    externalPom(baseDirectory(_/"../pom.xml")) 
) 

をこのように:

lazy val data = Project("data", file(baseDirectory(_/"..).settings(
    externalPom(baseDirectory(_/  "../pom.xml")) 
) 

メインクラスが検出されないため動作しません。

これを行う方法に関するご提案はありますか?私はSBTが初めてです。

+0

少し奇妙に聞こえますが、その2つのアプリを独立させるチャンスがありますか? – sorencito

+0

MavenからSBTに切り替えました。私たちはこの問題の問題を決して解決しませんでした。 – DCKing

+0

完璧に合理的! – sorencito

答えて

0

私はsuccessfulyあなたにもPLAY2アプリ用のMavenのモジュールを作成するには、このプラグインでPLAY2-のmaven-pluginの

http://nanoko-project.github.io/maven-play2-plugin/maven/release/

を使用しています、あなたはMavenのPOMで依存関係(データアクセス層)を定義します。プラグインは、playが依存関係を取得するようにします(pom依存関係をlibディレクトリのアンマネージ依存関係にコピーします)。

このプラグインを使用すると、1つのプロジェクトにすべてが含まれているため、多くの退屈なリビルドを避けることができるため、IDEは再構築なしですべてのモジュールに変更を見ます。

また、プラグインを使用すると、ローカルのmavenリポジトリ(このsbtバグhttps://github.com/sbt/sbt/issues/321)からのスナップショットの依存関係の更新に問題はありません。

0

私はちょうどplay2-maven-pluginsbt-pom-readerでこれを行いました。

これは、あなたのPLAY2-Mavenプロジェクトを設定する必要があります方法です:

<my-maven-project>/ 
    pom.xml     <- Your maven build 
    build.sbt    <- the sbt Play 2 configuration 
    project/ 
    build.properties  <- the sbt version specification 
    build.scala   <- the sbt build definition 
    plugins.sbt   <- the sbt plugin configuration 

    ..      <- Whatever files are normally in your maven project. 

の各ファイルは、以下の内容を持っている必要があります。

のpom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.foo</groupId> 
    <artifactId>bar</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>play2</packaging> 
    <name>My mavenified Play 2 application</name> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <play2.version>2.2.1</play2.version> 
     <play2-scala.version>2.10</play2-scala.version> 
     <play2.plugin.version>1.0.0-alpha5</play2.plugin.version> 
     <scala.version>2.10.2</scala.version> 
    </properties> 
    <repositories> 
     <repository> 
      <id>typesafe</id> 
      <name>Typesafe - releases</name> 
      <url>http://repo.typesafe.com/typesafe/releases/</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 
    <dependencies> 
     <dependency> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-library</artifactId> 
      <version>${scala.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.typesafe.play</groupId> 
      <artifactId>play_${play2-scala.version}</artifactId> 
      <version>${play2.version}</version> 
     </dependency> 
     <!-- only if using Java --> 
     <dependency> 
      <groupId>com.typesafe.play</groupId> 
      <artifactId>play-java_${play2-scala.version}</artifactId> 
      <version>${play2.version}</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <sourceDirectory>${basedir}/app</sourceDirectory> 
     <resources> 
      <resource> 
       <directory>${basedir}/conf</directory> 
      </resource> 
      <resource> 
       <directory>${basedir}</directory> 
       <includes> 
        <include>public/**</include> 
       </includes> 
      </resource> 
     </resources> 
     <!--<outputDirectory>target/scala-${play2-scala.version}/classes</outputDirectory>--> 
     <plugins> 
      <plugin> 
       <groupId>com.google.code.play2-maven-plugin</groupId> 
       <artifactId>play2-maven-plugin</artifactId> 
       <version>${play2.plugin.version}</version> 
       <extensions>true</extensions> 
       <dependencies> 
        <dependency> 
         <groupId>com.google.code.play2-maven-plugin</groupId> 
         <artifactId>play2-provider-play22</artifactId> 
         <version>${play2.plugin.version}</version> 
        </dependency> 
       </dependencies> 
       <!-- only if using Java --> 
       <configuration> 
        <mainLang>java</mainLang> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

build.sbt:

play.Project.playJavaSettings //or play.Project.playScalaSettings 

プロジェクト/ build.properties:

sbt.version=0.13.0 

プロジェクト/ build.scala:

object BuildFromMavenPomSettings extends com.typesafe.sbt.pom.PomBuild 

プロジェクト/プラグイン。sbt:

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.1") 

addSbtPlugin("com.typesafe.sbt" % "sbt-pom-reader" % "1.0.1") 
+0

SBTでもうMavenを使用しないので、この回答が正しいかどうかを確認する実際的な方法はありません。誰かがこの回答または他の回答を確認できる場合は、私は正解を記入して喜んでします。 – DCKing