2013-06-16 8 views
7

私は親pomの周りに編成された複数のmavenモジュールを持つmavenプロジェクトを持っています。これらすべてのモジュールは、私のPlay!の依存関係であるJARファイルにパッケージ化されています。 SBTプロジェクトとして構築されたアプリケーション:sbt(play!)プロジェクトとmavenの親pom

MyProject 
-> pom.xml (parent) 
MavenModule1 
    -> pom.xml (child pom) 
MavenModule2 
    -> pom.xml (child pom) 
PlayApplication 
    -> Build.scala (SBT project) 

すべてのMavenのモジュールが親モジュール(MyProjectと)の子プロジェクトなので、私はPlayApplicationが建設される以外、mvn clean installやプロジェクト全体を実行し、「MyProjectと」に行くことができます。 問題は、残りのモジュールと一緒にPlayApplicationビルドを起動するために、親pom/SBTビルドファイルを変更する方法です。

(私はすべてのハックを歓迎している、おそらくそれを行うには、単純な、ビルド中に方法がないことを知っている:))

答えて

9

使用play2-maven-plugin - あなたは、通常のMavenプロジェクトとしてプロジェクトをコンパイルすることができます。

Build.scalaの例(すべての変更は、POMとBuild.scala間で同期されるべきである)

import sbt._ 
import Keys._ 
import play.Project._ 
import Path._ 

object ApplicationBuild extends Build { 

    val myExternalPom = super.settings ++ externalPom(baseDirectory(_/"pom.xml")) 
    val appName   = "PlayApplication" 
    val appVersion  = "1.0.0" 

    val appDependencies = Seq(
    jdbc, 
    anorm 
) 


    val main = play.Project(appName, appVersion, appDependencies,file(".")).settings(
    resolvers ++= Seq("Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository" 
     , "central" at "http://artifactory:8081/artifactory/libs-release") 
).settings(
    externalPom() :_* 
) 

} 

ポンポンファイルにBuild.scalaからすべての依存関係

<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>test</groupId> 
    <artifactId>test</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>play2</packaging> 

    <name>Play! Framework 2.x Maven Test Project</name> 

    <repositories> 
     <repository> 
      <id>typesafe</id> 
      <name>Typesafe - releases</name> 
      <url>http://repo.typesafe.com/typesafe/releases/</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 

     <play2.plugin.version>1.0.0-alpha1</play2.plugin.version> 
     <play2.version>2.1.0</play2.version> 
     <play2-scala.version>2.10</play2-scala.version> 
     <scala.version>2.10.0</scala.version> 
    </properties> 
    <parent> 
     <groupId>com.company.project</groupId> 
     <artifactId>my-parent-pom</artifactId> 
     <version>1.0.0</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-compiler</artifactId> 
      <version>${scala.version}</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>play</groupId> 
      <artifactId>play_${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> 
     <directory>${basedir}/target/scala-${play2-scala.version}</directory> 
     <plugins> 
      <plugin> 
       <groupId>com.google.code.play2-maven-plugin</groupId> 
       <artifactId>play2-maven-plugin</artifactId> 
       <version>1.0.0-alpha1</version> 
       <extensions>true</extensions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

移動ファイル。 play eclipseいつもあなたがポンポンファイルを更新する場合:コマンドを実行してください - Mavenはあなたが日食IDE(Scalaの-IDE)を使用する場合NOTE

(私はそれをテストしていない)Build.scalaについて

を知りません。このコマンドは.classpathを更新します。アイデアでは、依存関係は自動的に更新されると思います。

UPDATE
POMファイルに<directory>${basedir}/target/scala-${play2-scala.version}</directory>を追加します。デフォルトではこのディレクトリにすべてコンパイルしてください(アイデアの問題)。アイデアにMavenプロジェクトとしてプロジェクトをインポートする - あなたは遊びのプラグインなしでアイデアを使用することができIDEAコミュニティVERSION
FOR

。前にplay ideaに電話しないでください。

関連する問題