2013-06-16 7 views
7

के साथ एसबीटी (प्ले!) प्रोजेक्ट का एकीकरण मेरे माता-पिता पोम के आस-पास कई मेवेन मॉड्यूल के साथ एक मेवेन प्रोजेक्ट है। इन सभी मॉड्यूल को जेएआर फाइलों में पैक किया गया है जो मेरे प्ले की निर्भरता हैं! एक एसबीटी प्रोजेक्ट के रूप में बनाया गया आवेदन:मैवेन पेरेंट पोम

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 बनाई जाएंगी। सवाल यह है कि मैं PlayApplication को अन्य मॉड्यूल के साथ एक साथ बनाने के लिए पैरेंट पोम/एसबीटी बिल्ड फ़ाइल को कैसे संशोधित कर सकता हूं?

(मैं जानता हूँ कि शायद नहीं है कि कोई सरल, निर्माण में जिस तरह से यह करने के लिए है, इसलिए सभी हैक्स स्वागत कर रहे हैं :))

उत्तर

9

उपयोग play2-maven-plugin - आप सामान्य Maven परियोजना के रूप में परियोजना को संकलित कर सकते हैं। Build.scala की

उदाहरण (सभी परिवर्तनों पोम और 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() :_* 
) 

} 

पोम फ़ाइल

<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 से सभी निर्भरता फ़ाइल पोम करने के लिए। Maven Build.scala के बारे में पता नहीं है (मैं इसे परीक्षण नहीं है)

नोट

आप ग्रहण आईडीई (स्केला-आईडीई) का उपयोग करते हैं - कृपया चलाने आदेश: play eclipse हमेशा जब आप पोम फ़ाइल का अद्यतन । यह आदेश अद्यतन .classpath। विचार में मुझे लगता है कि निर्भरता स्वचालित रूप से अपडेट हो जाती है।

अद्यतन
फ़ाइल पोम को <directory>${basedir}/target/scala-${play2-scala.version}</directory> जोड़ें। डिफ़ॉल्ट रूप से इस निर्देशिका में संकलित करें (विचार में समस्या)। विचार करने के लिए Maven परियोजना के रूप में अपनी परियोजना आयात -

आईडिया समुदाय संस्करण
आप खेलने प्लगइन के बिना विचार उपयोग कर सकते हैं के लिए । पहले play idea पर कॉल न करें।

संबंधित मुद्दे