新的GWT Maven插件

时间:2018-07-01 15:47:37

标签: maven gwt maven-plugin

当我尝试编译时出现以下错误。 目标是gwt:compile 我确实将moduleName设置为变量。 模块名称为~/work/projects/gwt/app$ mvn gwt:compile "-DmoduleName=com.example.app.App"

同一事物的命令行mvn package

  

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

另一方面,<?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:

.py

1 个答案:

答案 0 :(得分:1)

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

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

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