GWT Maven项目无法编译 - 没有类型的源代码可用

时间:2013-09-25 23:54:57

标签: maven gwt compilation gwt2 gwt-maven-plugin

我已经花了好几个小时来解决这个问题。

尝试编译Maven GWT项目,在GWT编译点遇到以下错误:

  

[INFO]编译模块com.ephesoft.dcma.gwt.login.Login
  [INFO]验证新编译的单位
  [INFO] [错误]'jar:file:/ D:/workspace2/dcma-root/dcma-gwt/dcma-gwt-core/target/dcma-gwt-core-0.0.14-> SNAPSHOT.jar!/com/ephesoft/dcma/gwt/core/client/validator/ValidatorFactory.java“
  [INFO] [ERROR]第47行:没有源代码可用于类型com.ephesoft.dcma.core.common.DataType;你忘了继承一个必要的模块吗?   [INFO] [错误]'jar:文件中的错误:/ D:/workspace2/dcma-root/dcma-gwt/dcma-gwt-core/target/dcma-gwt-core-0.0.14-SNAPSHOT.jar!/ COM / ephesoft / DCMA / GWT /核心/客户机/用户界面/ RotatableImage.java'
  [INFO] [ERROR]第54行:没有源代码可用于com.ephesoft.dcma.batch.schema.Direction类型;你忘了继承一个必要的模块吗?   [INFO] [错误]'jar:文件中的错误:/ D:/workspace2/dcma-root/dcma-gwt/dcma-gwt-core/target/dcma-gwt-core-0.0.14-SNAPSHOT.jar!/ COM / ephesoft / DCMA / GWT /型芯/共享/比较器/ DocumentTypeComparator.java'
  ...
  ......

并且列表继续......

这是我的webapp pom文件 -
dcma-root \ dcma-webapp \ 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>
    <packaging>war</packaging>

    <parent>
        <groupId>com.ephesoft.dcma</groupId>
        <artifactId>dcma-gwt</artifactId>
        <version>0.0.14-SNAPSHOT</version>
        <relativePath>../dcma-gwt</relativePath>
    </parent>
    <artifactId>dcma-webapp</artifactId>
    <name>DCMA: Web application Model</name>
    <description>The DCMA web Application model.</description>

    <dependencies>
        <dependency>
            <groupId>com.ephesoft.dcma</groupId>
            <artifactId>dcma-gwt-home</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ephesoft.dcma</groupId>
            <artifactId>dcma-gwt-login</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ephesoft.dcma</groupId>
            <artifactId>dcma-gwt-review-validate</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ephesoft.dcma</groupId>
            <artifactId>dcma-gwt-admin</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ephesoft.dcma</groupId>
            <artifactId>dcma-folder-monitor</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ephesoft.dcma</groupId>
            <artifactId>dcma-heart-beat</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ephesoft.dcma</groupId>
            <artifactId>dcma-mail-import</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ephesoft.dcma</groupId>
            <artifactId>dcma-gwt-batchInstance</artifactId>
        </dependency>
        <dependency>
            <groupId>com.ephesoft.dcma</groupId>
            <artifactId>dcma-gwt-reporting</artifactId>
        </dependency>       
        <dependency>
            <groupId>com.ephesoft.dcma</groupId>
            <artifactId>dcma-gwt-upload-batch</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.8</version>
                <configuration>
                    <additionalProjectnatures>
                        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                        <projectnature>com.google.gwt.eclipse.core.gwtNature</projectnature>
                        <projectnature>com.google.appengine.eclipse.core.gaeNature</projectnature>
                    </additionalProjectnatures>
                    <additionalBuildcommands>
                        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                        <buildcommand>com.google.gwt.eclipse.core.gwtProjectValidator</buildcommand>
                        <buildcommand>com.google.appengine.eclipse.core.enhancerbuilder</buildcommand>
                    </additionalBuildcommands>
                    <classpathContainers>
                        <classpathContainer>com.google.gwt.eclipse.core.GWT_CONTAINER</classpathContainer>
                    </classpathContainers>
                    <wtpversion>1.5</wtpversion>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>${gwt.maven.plugin.version}</version>
                <executions>
                    <execution>
                        <configuration>
                            <modules>
                                <module>com.ephesoft.dcma.gwt.core.Core</module>
                                <module>com.ephesoft.dcma.batch.Batch</module>
                                <module>com.ephesoft.dcma.gwt.login.Login</module>
                                <module>com.ephesoft.dcma.gwt.admin.bm.BatchClassManagement</module>
                                <module>com.ephesoft.dcma.gwt.home.BatchList</module>
                                <module>com.ephesoft.dcma.gwt.rv.ReviewValidate</module>
                                <module>com.ephesoft.dcma.gwt.batchInstance.BatchInstance</module>
                                <module>com.ephesoft.dcma.gwt.reporting.Report</module>
                                <module>com.ephesoft.dcma.gwt.uploadbatch.UploadBatch</module>
                            </modules>
                            <localWorkers>2</localWorkers>
                            <extraJvmArgs>-Xmx768m</extraJvmArgs>
                            <sourcesOnPath>false</sourcesOnPath>
                            <force>true</force>
                        </configuration>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>stand-alone</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>1.1.1</version>
                        <executions>
                            <execution>
                                <phase>test</phase>
                                <goals>
                                    <goal>java</goal>
                                </goals>
                                <configuration>
                                    <mainClass>com.ephesoft.dcma.webapp.DCMAExecuter</mainClass>
                                    <arguments>
                                        <argument>none</argument>
                                    </arguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

dcma-root \ dcma-gwt \ dcma-gwt-login \ src \ main \ java \ com \ ephesoft \ dcma \ gwt \ login \ Login.gwt.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6.4//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.6.4/distro-source/core/src/gwt-module.dtd">
<module rename-to='login'>
    <inherits name='com.google.gwt.user.User' />
    <inherits name='com.ephesoft.dcma.gwt.core.Core' />

    <entry-point class='com.ephesoft.dcma.gwt.login.client.LoginEntryPoint' />

</module>

DCMA根\ DCMA-GWT \ DCMA-GWT核\ SRC \主\的java \ COM \ ephesoft \ DCMA \ GWT \核心\ Core.gwt.xml:

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='core'>
    <inherits name='com.google.gwt.user.User' />
    <source path='client' />
    <source path='shared' />
    <inherits name="com.googlecode.gwt.math.Math" />
    <inherits name="com.ephesoft.dcma.batch.Batch" />
    <inherits name="com.ephesoft.dcma.core.Common" />
    <inherits name="com.ephesoft.dcma.da.Property" />
    <inherits name="com.google.gwt.i18n.I18N" />

    <inherits name='com.google.gwt.user.theme.standard.Standard' />
    <stylesheet src='css/style.css' />



</module>

dcma-root \ dcma-gwt \ dcma-gwt-core \ src \ main \ java \ com \ ephesoft \ dcma \ core \ Common.gwt.xml:

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='coreCommon'>

    <inherits name='com.google.gwt.user.User' />
    <source path="common" />
</module>

所以Login包含Core,后者又包含Common,那么问题是什么?

我非常感谢你的帮助!!!

2 个答案:

答案 0 :(得分:5)

如果我理解你需要编译gwt-module这个问题,那么另一个问题是什么呢?对于我们在依赖模块中使用的任务

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>gwt-maven-plugin</artifactId>
    <version>${gwt.version}</version>
    <executions>
      <execution>
        <goals>
          <goal>compile</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <extraJvmArgs>-Xmx1024M</extraJvmArgs>
      <localWorkers>3</localWorkers>
      <optimizationLevel>${gwt.optimize}</optimizationLevel>
      <style>OBF' -XenableClosureCompiler '-XenableClosureCompiler</style>
      <workDir>${project.build.directory}/gwt/temp</workDir>
      <deploy>${project.build.directory}/WEB-INF/deploy</deploy>
      <modules>
        <module>${module}</module>
      </modules>
      <hostedWebapp>${webappDirectory}</hostedWebapp>
      <logLevel>WARN</logLevel>
      <compileSourcesArtifacts>
        <compileSourcesArtifact>groupId:artifactId</compileSourcesArtifact>
      </compileSourcesArtifacts>
    </configuration>
  </plugin>

<compileSourcesArtifact>groupId:artifactId</compileSourcesArtifact>看起来像<compileSourcesArtifact>com.google.gwt:gwt-user</compileSourcesArtifact>和核心模块

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <executions>
      <execution>
        <id>attach-sources</id>
        <phase>package</phase>
        <goals>
          <goal>jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

答案 1 :(得分:0)

要编译依赖于另一个Maven模块的GWT模块,我必须将依赖项显式地添加到依赖项的源中:

<dependency>
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    <classifier>sources</classifier>
    <scope>compile</scope>
</dependency>

当然也要像@Teymur所说的那样从依赖项部署源:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
                <goal>jar-no-fork</goal>
            </goals>
        </execution>
    </executions>
</plugin>

这没有<compileSourcesArtifacts>设置。