Java maven的maven-tomcat7-plugin“无法确定最新版本”
我尝试为maven使用tomcat7插件。我正在使用Maven 2.2.1和Java1.7。我在pom.xml中包含了如下插件:Java maven的maven-tomcat7-plugin“无法确定最新版本”,java,maven,tomcat7,maven-plugin,Java,Maven,Tomcat7,Maven Plugin,我尝试为maven使用tomcat7插件。我正在使用Maven 2.2.1和Java1.7。我在pom.xml中包含了如下插件: <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> </plugi
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
...
我从~/.2m中删除了我的本地存储库,以确保那里没有问题。还设置了nox代理等。当我尝试使用“mvn tomcat7:run-X-U”深入研究这个问题时,我得到了以下跟踪:
错误堆栈跟踪已打开。Apache Maven 2.2.1 rdebian-14 Java版本:1.7.0_65 Java home:/usr/lib/jvm/Java-7-oracle/jre
默认区域设置:en_US,平台编码:UTF-8操作系统名称:linux
版本:3.13.0-32-generic-arch:amd64系列:unix[调试]
从以下位置构建Maven用户级插件注册表:
“/home/brost/.m2/plugin registry.xml”[DEBUG]构建Maven
全局级插件注册表,来自:
“/usr/share/maven2/conf/plugin registry.xml”[INFO]扫描
项目。。。[调试]为添加托管依赖项
gwt:gwt用户:jar:2.6.1:提供[调试]
gwt:gwtservlet:jar:2.6.1[DEBUG]
gwt:gwt-dev:jar:2.6.1:test[DEBUG]
servlet:javax.servlet api:jar:3.0.1:提供[调试]
gwtplatform:gwtp all:jar:1.3[调试]
inject:guice:jar:3.0[DEBUG]
extensions:guiceservlet:jar:3.0[DEBUG]
extensions:guice assistedinject:jar:3.0[DEBUG]
com.google.gwt.inject:gin:jar:2.1.2[DEBUG]
lambdaworks:scrypt:jar:1.4.0[DEBUG]junit:junit:jar:4.7:test
[DEBUG]org.jukito:jukito:jar:1.4:test[DEBUG]
org.hibernate:hibernate entitymanager:jar:4.3.5.Final[DEBUG]
org.hsqldb:hsqldb:jar:2.3.2[调试]
org.slf4j:slf4j-log4j12:jar:1.7.7:已提供[调试]
log:gwt-log:jar:3.3.0[DEBUG]添加托管
未知的依赖项:mdm客户端[调试]
gwt:gwt用户:jar:2.6.1:提供[调试]
gwt:gwtservlet:jar:2.6.1[DEBUG]
gwt:gwt-dev:jar:2.6.1:test[DEBUG]
servlet:javax.servlet api:jar:3.0.1:提供[调试]
gwtplatform:gwtp all:jar:1.3[调试]
inject:guice:jar:3.0[DEBUG]
extensions:guiceservlet:jar:3.0[DEBUG]
extensions:guice assistedinject:jar:3.0[DEBUG]
com.google.gwt.inject:gin:jar:2.1.2[DEBUG]
lambdaworks:scrypt:jar:1.4.0[DEBUG]junit:junit:jar:4.7:test
[DEBUG]org.jukito:jukito:jar:1.4:test[DEBUG]
org.hibernate:hibernate entitymanager:jar:4.3.5.Final[DEBUG]
org.hsqldb:hsqldb:jar:2.3.2[调试]
org.slf4j:slf4j-log4j12:jar:1.7.7:已提供[调试]
log:gwt-log:jar:3.3.0[DEBUG]添加托管
未知的依赖项:mdm共享[调试]
gwt:gwt用户:jar:2.6.1:提供[调试]
gwt:gwtservlet:jar:2.6.1[DEBUG]
gwt:gwt-dev:jar:2.6.1:test[DEBUG]
servlet:javax.servlet api:jar:3.0.1:提供[调试]
gwtplatform:gwtp all:jar:1.3[调试]
inject:guice:jar:3.0[DEBUG]
extensions:guiceservlet:jar:3.0[DEBUG]
extensions:guice assistedinject:jar:3.0[DEBUG]
com.google.gwt.inject:gin:jar:2.1.2[DEBUG]
lambdaworks:scrypt:jar:1.4.0[DEBUG]junit:junit:jar:4.7:test
[DEBUG]org.jukito:jukito:jar:1.4:test[DEBUG]
org.hibernate:hibernate entitymanager:jar:4.3.5.Final[DEBUG]
org.hsqldb:hsqldb:jar:2.3.2[调试]
org.slf4j:slf4j-log4j12:jar:1.7.7:已提供[调试]
log:gwt-log:jar:3.3.0[DEBUG]添加托管
未知的依赖项:mdm服务器[调试]
gwt:gwt用户:jar:2.6.1:提供[调试]
gwt:gwtservlet:jar:2.6.1[DEBUG]
gwt:gwt-dev:jar:2.6.1:test[DEBUG]
servlet:javax.servlet api:jar:3.0.1:提供[调试]
gwtplatform:gwtp all:jar:1.3[调试]
inject:guice:jar:3.0[DEBUG]
extensions:guiceservlet:jar:3.0[DEBUG]
extensions:guice assistedinject:jar:3.0[DEBUG]
com.google.gwt.inject:gin:jar:2.1.2[DEBUG]
lambdaworks:scrypt:jar:1.4.0[DEBUG]junit:junit:jar:4.7:test
[DEBUG]org.jukito:jukito:jar:1.4:test[DEBUG]
org.hibernate:hibernate entitymanager:jar:4.3.5.Final[DEBUG]
org.hsqldb:hsqldb:jar:2.3.2[调试]
org.slf4j:slf4j-log4j12:jar:1.7.7:已提供[调试]
com.allen sauer.gwt.log:gwt log:jar:3.3.0[INFO]反应堆建造顺序:
正在存储库中搜索前缀为“tomcat7”的插件。[调试]
从以下组加载插件前缀:org.apache.maven.plugins[INFO]
org.apache.maven.plugins:检查来自central的更新[调试]
从默认映射为
协议http[DEBUG]检查预先存在的用户代理
配置[调试]添加用户代理配置。[调试]
正在连接到存储库:“中心”,url为:
. [调试]使用WAG实现
轻量级协议http[DEBUG]加载的默认映射
组中的插件前缀:org.codehaus.mojo[INFO]
org.codehaus.mojo:检查来自central[DEBU]的更新
G] 使用
从协议的默认映射实现轻量级
http[DEBUG]检查预先存在的用户代理配置。
[调试]添加用户代理配置。[调试]连接到
存储库:“中心”,url:。
[调试]使用来自默认映射的轻量实现
对于协议http[INFO]工件
插件:maven-tomcat7-plugin:检查更新
从中心[DEBUG],使用来自
协议http[DEBUG]检查预先存在的默认映射
用户代理配置。[调试]添加用户代理配置。
[调试]连接到存储库:“中心”,url为:
. [调试]使用WAG实现
来自协议http[DEBUG]存储库的默认映射的轻量级
“artifact org.apache.maven.plugins:maven-tomcat7-plugin”的元数据
在存储库中找不到:中央[调试]
maven-tomcat7-plugin:使用本地安装的快照[调试]
未找到工件-使用存根模型:无法确定最新版本
版本
插件:maven-tomcat7-plugin:pom:LATEST
[调试]使用缺少POM的默认值
插件:maven-tomcat7-plugin:pom:LATEST[DEBUG]
maven-tomcat7-plugin:使用本地安装的快照[调试]
未找到工件-使用存根模型:无法确定版本
版本
插件:maven-tomcat7-plugin:pom:RELEASE
[调试]使用缺少POM的默认值
插件:maven-tomcat7-plugin:pom:RELEASE[INFO]
------------------------------------[错误]生成错误[信息]
------------------------------------[信息]org.apache.maven.plugins:maven-tomcat7-plugin插件
不存在或找不到有效版本[信息]
------------------------------------[DEBUG]Trace org.apache.maven.lifecycle.LifecycleExecutionException:
插件“org.apache.maven.plugins:maven-tomcat7-plugin”没有
存在或在上找不到有效版本
org.apache.maven.lifecycle.DefaultLifecycleExecutor.verifyPluginDefaultLifecycleExecutor.java:1569
在
org.apache.maven.lifecycle.DefaultLifecycleExecutor.getMojoDescriptorDefaultLifecycleExecutor.java:1851
在
org.apache.maven.lifecycle.DefaultLifecycleExecutor.segmentTaskListByAggregationNeedsDefaultLifecycleExecutor.java:462
在
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeDefaultLifecycleExecutor.java:175
在org.apache.maven.DefaultMaven.doExecuteDefaultMaven.java:328 at
org.apache.maven.DefaultMaven.executeDefaultMaven.java:138 at
org.apache.maven.cli.MavenCli.mainMavenCli.java:362
org.apache.maven.cli.compat.CompatibleMain.maincatiblemain.java:60
在sun.reflect.NativeMethodAccessorImpl.invoke0Native方法在
sun.reflect.NativeMethodAccessorImpl.invokeNativeMethodAccessorImpl.java:57
在
sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43
java:606 at
org.codehaus.classworlds.Launcher.launchEnhancedLauncher.java:315
位于org.codehaus.classworlds.Launcher.launchLauncher.java:255处
org.codehaus.classworlds.Launcher.mainWithExitDelauncher.java:430
位于org.codehaus.classworlds.Launcher.mainluncher.java:375
作者:org.apache.maven.plugin.version.pluginInversionNotFoundException:
插件“org.apache.maven.plugins:maven-tomcat7-plugin”没有
存在或在上找不到有效版本
org.apache.maven.plugin.version.DefaultPluginVersionManager.resolvePluginVersionDefaultPluginVersionManager.java:229
在
org.apache.maven.plugin.version.DefaultPluginVersionManager.resolvePluginVersionDefaultPluginVersionManager.java:91
在
org.apache.maven.plugin.DefaultPluginManager.verifyPluginDefaultPluginManager.java:179
在
org.apache.maven.plugin.DefaultPluginManager.loadPluginDescriptorDefaultPluginManager.java:1642
在
org.apache.maven.lifecycle.DefaultLifecycleExecutor.verifyPluginDefaultLifecycleExecutor.java:1540
... 还有15个
但是可以肯定的是,该插件在maven存储库中是可用的
我们在pom.xml中定义了三个子模块。但如果我删除它们,错误仍然是一样的。因此,这不应该与底层pom.xml文件相关
我可以做些什么来进一步调试它
编辑:这是完整的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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>testproject</groupId>
<artifactId>mdm</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<prerequisites>
<maven>${mavenVersion}</maven>
</prerequisites>
<properties>
<!-- client -->
<gwt.version>2.6.1</gwt.version>
<gwtp.version>1.3</gwtp.version>
<gin.version>2.1.2</gin.version>
<gwt-maven-plugin.version>2.6.1</gwt-maven-plugin.version>
<!-- server -->
<guice.version>3.0</guice.version>
<!-- testing -->
<junit.version>4.7</junit.version>
<jukito.version>1.4</jukito.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${gwt.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>${gwt.version}</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${gwt.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- GWT-Platform -->
<dependency>
<groupId>com.gwtplatform</groupId>
<artifactId>gwtp-all</artifactId>
<version>${gwtp.version}</version>
</dependency>
<!-- DI -->
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>${guice.version}</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-servlet</artifactId>
<version>${guice.version}</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-assistedinject</artifactId>
<version>${guice.version}</version>
</dependency>
<dependency>
<groupId>com.google.gwt.inject</groupId>
<artifactId>gin</artifactId>
<version>${gin.version}</version>
</dependency>
<!-- Password Hashing scrypt -->
<dependency>
<groupId>com.lambdaworks</groupId>
<artifactId>scrypt</artifactId>
<version>1.4.0</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jukito</groupId>
<artifactId>jukito</artifactId>
<version>${jukito.version}</version>
<scope>test</scope>
</dependency>
<!-- Hibernate -->
<!-- for JPA, use hibernate-entitymanager instead of hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.5.Final</version>
</dependency>
<!-- hSQLDB -->
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.3.2</version>
</dependency>
<!-- Server Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
<scope>provided</scope>
</dependency>
<!-- GWT-Log -->
<dependency>
<groupId>com.allen-sauer.gwt.log</groupId>
<artifactId>gwt-log</artifactId>
<version>3.3.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.1.v20140609</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.6.1</version>
<configuration>
<deploy>${project.build.directory}/gwtc/extra</deploy>
<extra>${project.build.directory}/gwtc/extra</extra>
<gen>${project.build.directory}/gwtc/gen</gen>
<!-- There's an issue on Mac: see http://code.google.com/p/google-web-toolkit/issues/detail?id=7474
<workDir>${project.build.directory}/gwtc/work</workDir> <codeServerWorkDir>${project.build.directory}/gwtc/superDevMode</codeServerWorkDir> -->
</configuration>
<executions>
<execution>
<id>gwt-compile</id>
<phase>prepare-package</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.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>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
这看起来像是pom.xml中的错误。您可能忘了在部分中包含插件的组id,这将使maven假定默认的/automagic组id org.apache.maven.plugins 应该是这样的:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
...
发布整个POM,以便我们检查。我成功地使用了该插件,根据您的解释,唯一的区别是我运行了Maven 3。我发布了整个POM.xml。我只是不想让帖子过多,但你是对的。起初,POM看起来还可以,但你要求两个插件,用于Tomcat6a
nd 7。我不知道这是否是一个问题,但是-除非有具体的原因-只要选择一个匹配您的服务器版本。这是出于两台机器之间的兼容性原因。我删除了tomcat6,但仍然没有用:它嵌套在pluginManagement标签中,但这应该可以,对吗?但是你是对的,它似乎在错误的组中寻找插件。实际上,你应该简单地删除标签,而不是内容,只是标签。这也许能解决问题,但为什么这是个问题呢?根据maven文档,它适用于从该版本继承的构建。这就是我们要做的。不,你没有真正继承它,因为你仍然需要一个引用pluginManagement元素的普通元素。它只需要包含groupId和artifactId字段,并将引入所有其他信息版本、配置等。。。根据插件管理中的定义。