2013-06-16 16 views
7

Ana pompanın etrafında düzenlenen çoklu maven modülleriyle bir maven projem var. Tüm bu modüller, Play'imin bağımlılıkları olan JAR dosyalarına paketlenir! Bir SBT projesi olarak inşa uygulaması:maven ana pompalı sbt (oyun!) Projesinin entegrasyonu

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

tüm maven modülleri ana modülü (Projem) çocuk projeler olduğundan, ben, 'MyProject' gidebilirsiniz PlayApplication inşa edilecek hariç mvn clean install ve tüm projeyi yürütmek. Asıl soru, PlayApplication kurulumunu modüllerin geri kalanıyla birlikte çalıştırmak için ana pompa/SBT oluşturma dosyasını nasıl değiştirebilirim?

(Öyle tüm kesmek karşılandığı, muhtemelen bunu yapmak için hiçbir basit, yap-yol olduğunu biliyoruz :))

cevap

9

Kullanım play2-maven-plugin - Normal maven projesi olarak projeyi derlemek olabilir. Build.scala arasında

Örnek (tüm değişiklikleri pom ve Build.scala arasında senkronize olmalıdır)

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 Build.scala tüm bağımlılıkları dosya pom için

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

hareket dosya. Maven'in (ben bunu test etmeyin) Build.scala bilmem

NOT

Eğer tutulma IDE (Scala-ide) kullanırsanız - çalıştırın komut: Eğer pom dosyasını güncellemek hep play eclipse . Bu komut güncellemeleri .classpath. Sanırım bağımlılıkların otomatik olarak güncelleneceğini düşünüyorum.

GÜNCELLEME
dosyayı pom için <directory>${basedir}/target/scala-${play2-scala.version}</directory> ekleyin. Varsayılan olarak bu dizinin tümünü derleyin (fikirdeki sorun). fikrine maven projesi olarak projenizi içe - IDEA TOPLULUK VERSION
Sen oyun eklentisi olmadan fikir kullanabilirsiniz İÇİN

. Daha önce play idea'u arama.

İlgili konular