当我尝试编译时出现以下错误。
目标是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
答案 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 install
个app-shared
子模块;否则Maven将无法解决依赖关系(因为您将不再执行完整的“反应堆构建”。
由于多种原因(请以http://blog.lexspoon.org/2012/12/recursive-maven-considered-harmful.html和http://blog.ltgt.net/maven-is-broken-by-design/为起点),我强烈反对这种做法(mvn install
是一种反模式;大多数情况下,您实际上想要的是{{1 }});而且我也不鼓励在多模块构建中使用mvn verify
之前的任何阶段(归结为仅使用package
,可能使用mvn package
和-DskipTests
的任何阶段)