2014-09-24 162 views
-1

我试图将玩框架(Java版本)与maven和intellij想法集成。为此我使用play2-maven-plugin(https://code.google.com/p/play2-maven-plugin/);与maven集成玩框架

我创建了pom文件,如手册中所述。 现在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>org.sigmaps</groupId> 
    <artifactId>afrodita</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>play2</packaging> 

    <name>Afrodita</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.version>2.3.3</play2.version> 
     <scala.version>2.10.4</scala.version> 

     <play2.plugin.version>1.0.0-alpha8</play2.plugin.version> 
     <sbt-compiler.plugin.version>1.0.0-beta4</sbt-compiler.plugin.version> 
    </properties> 

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

     <dependency> 
      <groupId>com.typesafe.play</groupId> 
      <artifactId>play_2.10</artifactId> 
      <version>${play2.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>com.typesafe.play</groupId> 
      <artifactId>play-java_2.10</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> 

     <plugins> 
      <plugin> 
       <groupId>com.google.code.play2-maven-plugin</groupId> 
       <artifactId>play2-maven-plugin</artifactId> 
       <version>${play2.plugin.version}</version> 
       <extensions>true</extensions> 
      </plugin> 
     </plugins> 
    </build> 

在IntelliJ IDEA的,Maven的项目选项卡我点击插件=> play2 => paly2:运行

然后给出一个错误:

[INFO] [play2:run {execution: default-cli}] 
[INFO] ------------------------------------------------------------------------ 
[ERROR] FATAL ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] null 
[INFO] ------------------------------------------------------------------------ 
[INFO] Trace 
java.lang.NullPointerException 
    at com.google.code.play2.plugin.AbstractPlay2ServerMojo.getProjectClassPath(AbstractPlay2ServerMojo.java:151) [INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Afrodita 
[INFO] task-segment: [com.google.code.play2-maven-plugin:play2-maven-plugin:1.0.0-alpha8:run] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [play2:run {execution: default-cli}] 
[INFO] ------------------------------------------------------------------------ 
[ERROR] FATAL ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] null 
[INFO] ------------------------------------------------------------------------ 
[INFO] Trace 
java.lang.NullPointerException 
    at com.google.code.play2.plugin.AbstractPlay2ServerMojo.getProjectClassPath(AbstractPlay2ServerMojo.java:151) 
    at com.google.code.play2.plugin.AbstractPlay2ServerMojo.prepareAntJavaTask(AbstractPlay2ServerMojo.java:70) 
    at com.google.code.play2.plugin.AbstractPlay2RunMojo.internalExecute(AbstractPlay2RunMojo.java:91) 
    at com.google.code.play2.plugin.AbstractPlay2Mojo.execute(AbstractPlay2Mojo.java:139) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2 seconds 
[INFO] Finished at: Wed Sep 24 12:41:25 MSK 2014 
[INFO] Final Memory: 14M/299M 
[INFO] ------------------------------------------------------------------------ 

Process finished with exit code 1 
    at com.google.code.play2.plugin.AbstractPlay2ServerMojo.prepareAntJavaTask(AbstractPlay2ServerMojo.java:70) 
    at com.google.code.play2.plugin.AbstractPlay2RunMojo.internalExecute(AbstractPlay2RunMojo.java:91) 
    at com.google.code.play2.plugin.AbstractPlay2Mojo.execute(AbstractPlay2Mojo.java:139) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

然后我尝试SBT-编译器=> SBT-编译:编译并给了我另一个错误:

[INFO] Building Afrodita 
[INFO] task-segment: [com.google.code.sbt-compiler-maven-plugin:sbt-compiler-maven-plugin:1.0.0-beta4:compile] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [sbt-compiler:compile {execution: default-cli}] 
[INFO] ------------------------------------------------------------------------ 
[ERROR] FATAL ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] An invalid artifact was detected. 

This artifact might be in your project's POM, or it might have been included transitively during the resolution process. Here is the information we do have for this artifact: 

    o GroupID:  <<<MISSING>>> 
    o ArtifactID: sbt-compiler-sbt0135 
    o Version:  <<<MISSING>>> 
    o Type:  jar 

[INFO] ------------------------------------------------------------------------ 
[INFO] Trace 
org.apache.maven.artifact.InvalidArtifactRTException: For artifact {null:sbt-compiler-sbt0135:null:jar}: The groupId cannot be empty. 
    at org.apache.maven.artifact.DefaultArtifact.validateIdentity(DefaultArtifact.java:129) 
    at org.apache.maven.artifact.DefaultArtifact.<init>(DefaultArtifact.java:122) 
    at org.apache.maven.artifact.factory.DefaultArtifactFactory.createArtifact(DefaultArtifactFactory.java:158) 
    at org.apache.maven.artifact.factory.DefaultArtifactFactory.createArtifact(DefaultArtifactFactory.java:117) 
    at org.apache.maven.artifact.factory.DefaultArtifactFactory.createArtifact(DefaultArtifactFactory.java:111) 
    at org.apache.maven.artifact.factory.DefaultArtifactFactory.createArtifact(DefaultArtifactFactory.java:40) 
    at com.google.code.sbt.compiler.plugin.AbstractSBTCompileMojo.getResolvedArtifact(AbstractSBTCompileMojo.java:547) 
    at com.google.code.sbt.compiler.plugin.AbstractSBTCompileMojo.getWellKnownSbtCompiler(AbstractSBTCompileMojo.java:685) 
    at com.google.code.sbt.compiler.plugin.AbstractSBTCompileMojo.getSbtCompiler(AbstractSBTCompileMojo.java:635) 
    at com.google.code.sbt.compiler.plugin.AbstractSBTCompileMojo.internalExecute(AbstractSBTCompileMojo.java:287) 
    at com.google.code.sbt.compiler.plugin.SBTCompileMojo.internalExecute(SBTCompileMojo.java:102) 
    at com.google.code.sbt.compiler.plugin.AbstractSBTCompileMojo.execute(AbstractSBTCompileMojo.java:247) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

如果我尝试使用激活器运行项目,那么运行正常。 我该怎么办才能解决这个问题,并使用maven运行项目,而不使用SBT?

回答

0

play2:run目标有一个executedProject参数是可选的。在没有使用过play2的情况下,我的第一个猜测是,它不是目标所假设的目标。如果您运行mvn ... -e -X(打印错误和调试信息),您是否看到了它实际设置的值?