Java 如何强制依赖项包含具有特定版本号的工件
我在尝试使用maven构建GWT项目时遇到以下错误: 您的项目声明了对gwt用户2.6.0的依赖关系。这个插件是 至少为gwt 2.7.0版设计 我发现gwt用户2.6.0是通过com.google.gwt.eventbinder下载的。 如何强制com.google.gwt.eventbinder使用gwt用户2.7.0而不是2.6.0 奇怪的是,这个构建在我使用git-pull之前就已经运行了 这是我的pom.xmlJava 如何强制依赖项包含具有特定版本号的工件,java,maven,gwt,maven-3,Java,Maven,Gwt,Maven 3,我在尝试使用maven构建GWT项目时遇到以下错误: 您的项目声明了对gwt用户2.6.0的依赖关系。这个插件是 至少为gwt 2.7.0版设计 我发现gwt用户2.6.0是通过com.google.gwt.eventbinder下载的。 如何强制com.google.gwt.eventbinder使用gwt用户2.7.0而不是2.6.0 奇怪的是,这个构建在我使用git-pull之前就已经运行了 这是我的pom.xml <?xml version="1.0" encoding="UTF-
<?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.prognoz.ra.okhs</groupId>
<artifactId>gwtclient</artifactId>
<version>0.3.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<gwt.version>2.7.0</gwt.version>
<maven.version>3.0.5</maven.version>
<jdk.version>1.7</jdk.version>
<version.org.codehaus.mojo.gwt.maven.plugin>2.7.0</version.org.codehaus.mojo.gwt.maven.plugin>
<webappDirectory>war</webappDirectory>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
<skipTests>true</skipTests>
</properties>
<prerequisites>
<maven>${maven.version}</maven>
</prerequisites>
<dependencies>
<dependency>
<groupId>org.moxieapps.gwt</groupId>
<artifactId>highcharts</artifactId>
<version>1.7.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/highcharts-1.7.0.jar</systemPath>
</dependency>
<dependency>
<groupId>com.prognoz.ra.dbutil</groupId>
<artifactId>dbutil</artifactId>
<scope>system</scope>
<version>1.0.1-SNAPSHOT</version>
<systemPath>${basedir}/out/artifacts/dbutil_jar/dbutil.jar</systemPath>
</dependency>
<dependency>
<groupId>com.liferay.org.apache.commons.fileupload</groupId>
<artifactId>com.liferay.org.apache.commons.fileupload</artifactId>
<version>6.2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<version>${gwt.version}</version>
<artifactId>gwt-servlet</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-gwt</artifactId>
<version>18.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>com.google.gwt.eventbinder</groupId>
<artifactId>eventbinder</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${version.org.codehaus.mojo.gwt.maven.plugin}</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<compileReport>true</compileReport>
<logLevel>INFO</logLevel>
<copyWebapp>true</copyWebapp>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
<configuration>
</configuration>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<server>Tomcat8_local</server>
<path>/ra-okhs</path>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>m2e</id>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
4.0.0
com.prognoz.ra.okhs
gwtclient
0.3.1-快照
战争
UTF-8
2.7.0
3.0.5
1.7
2.7.0
战争
yyyy MM dd HH:MM
真的
${maven.version}
org.moxieapps.gwt
海图
1.7.0
系统
${basedir}/src/main/webapp/WEB-INF/lib/highcharts-1.7.0.jar
com.prognoz.ra.dbutil
dbutil
系统
1.0.1-快照
${basedir}/out/artifacts/dbutil\u jar/dbutil.jar
com.liferay.org.apache.commons.fileupload
com.liferay.org.apache.commons.fileupload
6.2.0.1
org.apache.commons
公地io
1.3.2
com.google.gwt
${gwt.version}
gwt servlet
javax.servlet
servlet api
2.5
假如
javax.servlet
jsp api
2
假如
番石榴
番石榴
18
番石榴
番石榴
18
log4j
log4j
1.2.17
公地io
公地io
2.3
com.google.gwt.eventbinder
eventbinder
1.1.0
${basedir}/src/main/java
**/*.物业
org.codehaus.mojo
GWTMaven插件
${version.org.codehaus.mojo.gwt.maven.plugin}
编译
真的
信息
真的
org.apache.maven.plugins
maven源插件
2.4
maven战争插件
2.5
maven部署插件
2.8.2
部署
部署
部署
org.apache.tomcat.maven
tomcat7 maven插件
2.2
http://localhost:8080/manager/text
Tomcat8_本地
/拉奥克斯
org.apache.maven.plugins
maven编译器插件
2.3.2
${jdk.version}
${jdk.version}
m2e
m2e.version
org.codehaus.mojo
GWTMaven插件
解决方案1 问题是eventbinder依赖于gwt用户工件。默认情况下,它使用2.6.0。您可以使用此命令查看它
mvn dependency:tree
如果将此依赖项块添加到pom中
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>2.7.0</version>
</dependency>
com.google.gwt
看起来是这样的
这意味着您的项目将一直使用gwt user 2.7.0,我还没有测试版本兼容性是否一切正常,或者您的问题是否会得到解决
解决方案2
感谢@Thomas Broyer的评论,我们可以强制eventbinder使用2.7.0 gwt用户或任何gwt依赖项。如果我们只是将这种依赖关系管理添加到pom中
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt</artifactId>
<version>2.7.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
com.google.gwt
或者您可以使用dependencyManagement。从2.7.0开始,您可以使用scope=import和com.google.gwt:gwt在dependencyManagement中导入gwt用户、gwt servlet、gwt dev等。解决方案2非常有助于修复reflections>0.9.11和Guava之间的冲突