【问题标题】:New GWT maven plugin新的 GWT Maven 插件
【发布时间】:2018-07-01 15:47:37
【问题描述】:

当我尝试编译时出现以下错误。 目标是 gwt:compile 我确实将 moduleName 设置为变量。 模块名称为com.example.app.App

同样的命令行~/work/projects/gwt/app$ mvn gwt:compile "-DmoduleName=com.example.app.App"

未能执行目标 net.ltgt.gwt.maven:gwt-maven-plugin:1.0-rc-6:compile (default-cli) on project mysandbox:目标的参数“moduleName” net.ltgt.gwt.maven:gwt-maven-plugin:1.0-rc-6:compile 丢失或 无效 -> [帮助 1]

另一方面,mvn package 起作用了。

这是我的 pom:

<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>app</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <prerequisites>
    <maven>${mavenVersion}</maven>
  </prerequisites>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <mavenVersion>3.0</mavenVersion>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.google.gwt</groupId>
        <artifactId>gwt</artifactId>
        <version>2.8.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>net.ltgt.gwt.maven</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <inherited>false</inherited>
        <configuration>
          <launcherDir>${project.build.directory}/gwt/launcherDir</launcherDir>
        </configuration>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <!-- Do not upgrade past 3.1 to avoid triggering https://issues.apache.org/jira/browse/MSOURCES-95 -->
          <version>3.1</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-maven-plugin</artifactId>
          <version>9.3.14.v20161028</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <plugin>
          <groupId>net.ltgt.gwt.maven</groupId>
          <artifactId>gwt-maven-plugin</artifactId>
          <version>1.0-rc-6</version>
          <extensions>true</extensions>
          <configuration>
            <sourceLevel>1.8</sourceLevel>
            <failOnError>true</failOnError>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.0.1</version>
          <executions>
            <execution>
              <id>attach-sources</id>
              <phase>package</phase>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat6-maven-plugin</artifactId>
          <version>2.2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <modules>
    <module>app-client</module>
    <module>app-shared</module>
    <module>app-server</module>
  </modules>
</project>

【问题讨论】:

  • 你能展示你的POM吗? (顺便说一句,你为什么只想gwt:compile?它不会处理你的资源,运行你的注释处理器并将生成的源目录添加为源根目录)
  • 我以为我必须先 gwt:compile 然后 gwt:package-app,这是 pom。
  • 如果你想打包你的项目,那么mvn package就可以了。如果您想“调用”任何“任务”并自动执行所有其他必需的“任务”,那么恐怕 Maven(及其线性构建生命周期)不是合适的工具(看看 Gradle 而不是) .

标签: maven gwt maven-plugin


【解决方案1】:

所以,您有一个多模块 Maven 项目。调用 mvn gwt:compile 将尝试在 4 个模块(根模块和 3 个子模块)中的每一个上执行该“目标”。因为您的moduleName 属性(用于配置gwt:compile 目标的moduleName 属性)可能只存在于app-client 子模块中,所以gwt:compile 在应用于根模块或app-shared 子模块时会失败。

如果您想构建您的项目,请运行 mvn package(如果您不想运行测试,请通过 -DskipTests)。

从技术上讲,您也可以运行mvn gwt:compile,但直接在子模块内。为此,您首先必须 mvn install app-shared 子模块;否则 Maven 将无法解决依赖关系(因为您将不再执行完整的“反应器构建”。
出于多种原因(请参阅 http://blog.lexspoon.org/2012/12/recursive-maven-considered-harmful.htmlhttp://blog.ltgt.net/maven-is-broken-by-design/ 作为起点),我强烈反对这种做法(mvn install 是一种反模式;大多数时候您想要的实际上是 mvn verify);我也不鼓励在多模块构建中使用package 之前的任何阶段(归结为只使用mvn package,可能使用-DskipTestsmvn verify

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2014-06-23
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多