【问题标题】:integration of sbt (play!) project with maven parent pomsbt (play!) 项目与 maven 父 pom 的集成
【发布时间】:2013-06-12 20:12:48
【问题描述】:

我有一个 maven 项目,其中包含多个围绕父 pom 组织的 maven 模块。所有这些模块都打包到 JAR 文件中,这些文件是我的 Play 的依赖项!作为 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 构建?

(我知道可能没有简单的内置方法可以做到这一点,所以欢迎所有 hack :))

【问题讨论】:

    标签: maven build sbt playframework-2.1


    【解决方案1】:

    使用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 eclipse 总是在你更新 pom 文件时。此命令更新 .classpath 。在想法上,我认为依赖项会自动更新。

    更新
    &lt;directory&gt;${basedir}/target/scala-${play2-scala.version}&lt;/directory&gt; 添加到 pom 文件中。默认播放全部编译到这个目录下(思路有问题)。

    适用于 IDEA 社区版
    您可以在没有播放插件的情况下使用想法 - 将您的项目作为 maven 项目导入到想法。之前不要打电话给play idea

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 2013-04-17
      • 2012-12-02
      • 2021-11-16
      • 2013-10-24
      • 1970-01-01
      • 2023-03-05
      相关资源
      最近更新 更多