Grails-使用maven构建模块化项目

Grails-使用maven构建模块化项目,maven,build-process,grails-2.3,grails-maven,Maven,Build Process,Grails 2.3,Grails Maven,我正在开发Grails2.3.4应用程序,并试图为构建目的添加maven(3.1.1)。我这样做是因为我的项目是模块化的(2个插件,1个应用程序-现在,以后会有更多插件),我希望有支持它的工具(我没有使用Gradle,但那完全是另一个主题)。最近我发现了一些我不理解的问题,这让我的大脑受伤。我将非常感谢对他们的任何帮助 我的项目结构如下所示: my_project/ my_project-domain/ (plugin) pom.xml my_project-services/ (plu

我正在开发Grails2.3.4应用程序,并试图为构建目的添加maven(3.1.1)。我这样做是因为我的项目是模块化的(2个插件,1个应用程序-现在,以后会有更多插件),我希望有支持它的工具(我没有使用Gradle,但那完全是另一个主题)。最近我发现了一些我不理解的问题,这让我的大脑受伤。我将非常感谢对他们的任何帮助

我的项目结构如下所示:

my_project/
 my_project-domain/ (plugin)
  pom.xml
 my_project-services/ (plugin)
  pom.xml
 my_project-webap/ (app)
  pom.xml
 pom.xml
我的父母pom.xml:

<?xml version="1.0" encoding="utf-8"?>
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>my.app.group</groupId>
    <artifactId>myArtifactId</artifactId>
    <packaging>pom</packaging>
    <version>0.0.2</version>

    <name>myArtifactId</name>

    <properties>
        <grails.version>2.3.4</grails.version>
        <h2.version>1.3.170</h2.version>
    </properties>

    <repositories>    
        ...
    </repositories>


    <modules>
        <module>my_project-domain</module>
        <module>my_project-services</module>
        <module>my_project-webapp</module>
     </modules>

     <dependencies>

        <!-- MONGODB -->
        <dependency>
            <groupId>org.grails.plugins</groupId>
            <artifactId>mongodb</artifactId>
            <version>1.3.0</version>
            <scope>compile</scope>
            <type>zip</type>
            <exclusions>
                <!-- proper spring-core and spring-beans version included by org.grails:grails-plugin-services -->
                <exclusion>
                    <artifactId>spring-core</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-beans</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- TOMCAT needed during testing -->
        <dependency>
            <groupId>org.grails.plugins</groupId>
            <artifactId>tomcat</artifactId>
            <version>7.0.47</version>
            <scope>provided</scope>
            <type>zip</type>
        </dependency>       

        <!-- without h2 TOMCAT throws DataSource errors -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>${h2.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- GRAILS dependencies-->
        <dependency>
            <groupId>org.grails</groupId>
            <artifactId>grails-plugin-async</artifactId>
            <version>${grails.version}</version>
        </dependency>
        ...
    </dependencies>

    <build>
        <pluginManagement/>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId> 
                <artifactId>maven-compiler-plugin</artifactId>
                ...
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                ...
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                ...
            </plugin>
            <plugin>
                <groupId>org.grails</groupId>
                <artifactId>grails-maven-plugin</artifactId>
                <version>${grails.version}</version>
                <configuration>
                    <fork>true</fork>
                    <!-- for debugging <forkDebug>true</forkDebug> -->
                </configuration>
                <extensions>true</extensions>
                ...
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
        <id>tools</id>
            ...
        </profile>
    </profiles>
</project>
  • 为什么由
    mvn grails:test app执行的集成测试失败,以及如何修复它?我需要exec命令用于某些特定目的,我希望能够依赖它。这是我最大的问题,我完全不明白原因是什么

  • 为什么
    mvn grails:tests应用程序
    会导致双重测试执行
  • 为什么我需要为tomcat添加h2依赖项?在我的数据源中,我只有mongodb配置,我只想坚持使用它,并且每次执行集成测试时都不会看到以下错误:

    |Completed 8 unit tests, 0 failed in 0m 2s
    ........pool.ConnectionPool Unable to create initial connections of pool.
    java.sql.SQLException: org.h2.Driver
            at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
            at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
            ...
    Caused by: java.lang.ClassNotFoundException: org.h2.Driver
            at org.grails.launcher.RootLoader.findClass(RootLoader.java:147)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
            at org.grails.launcher.RootLoader.loadClass(RootLoader.java:119)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:249)
            at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
            ... 331 more
    ........
    |Running 4 integration tests...
    
  • 感谢所有到目前为止仍在阅读的人——无论你是否能提供帮助:)

    汤姆

    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Build Order:
    [INFO]
    [INFO] myArtifactId
    [INFO] my_project-domain
    [INFO] my_project-services
    [INFO] my_project-webapp
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building myArtifactId 0.0.2
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- grails-maven-plugin:2.3.4:test-app (default-cli) @ myArtifactId ---
    |Loading Grails 2.3.4
    |Configuring classpath
    |Running pre-compiled script
    .
    |Environment set to test
    .......
    |Application metadata not found, please run: grails upgrade
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO]
    [INFO] myArtifactId ..................................... FAILURE [7.116s]
    [INFO] my_project-domain ................................ SKIPPED
    [INFO] my_project-services .............................. SKIPPED
    [INFO] my_project-webapp ................................ SKIPPED
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    
    |Completed 8 unit tests, 0 failed in 0m 2s
    ........pool.ConnectionPool Unable to create initial connections of pool.
    java.sql.SQLException: org.h2.Driver
            at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
            at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
            ...
    Caused by: java.lang.ClassNotFoundException: org.h2.Driver
            at org.grails.launcher.RootLoader.findClass(RootLoader.java:147)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
            at org.grails.launcher.RootLoader.loadClass(RootLoader.java:119)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:249)
            at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
            ... 331 more
    ........
    |Running 4 integration tests...