8

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

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

すべての Maven モジュールは親モジュール (MyProject) の子プロジェクトであるため、'MyProject' に移動してmvn clean installプロジェクト全体を実行できますが、PlayApplication はビルドされます。問題は、親 pom/SBT ビルド ファイルを変更して、残りのモジュールと一緒に PlayApplication ビルドを起動するにはどうすればよいかということです。

(おそらく、それを行うための簡単な組み込みの方法はないことを知っているので、すべてのハックが歓迎されます:))

4

1 に答える 1

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() :_*
  )

}

Pom ファイル

<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>

すべての依存関係を Build.scala から pom ファイルに移動します。Maven は Build.scala について知りません (私はテストしていません)

ノート

Eclipse IDE (scala-ide) を使用している場合 - play eclipsepom ファイルを更新するときは常にコマンドを実行してください。このコマンドは .classpath を更新します。アイデアでは、依存関係は自動的に更新されると思います。

更新pom ファイル
に追加します。<directory>${basedir}/target/scala-${play2-scala.version}</directory>デフォルトで再生すると、すべてこのディレクトリにコンパイルされます (アイデアの問題)。

IDEA COMMUNITY バージョン
の場合 play プラグインなしで idea を使用できます - プロジェクトを maven プロジェクトとして idea にインポートします。前に電話しないでくださいplay idea

于 2013-06-17T07:58:51.547 に答える