1

可能重复:
Maven 尝试部署到本地主机而不是远程服务器

我在这里有一个有趣的问题。我正在使用 Maven - 3.0.4 和 jdk 1.6 在 Windows 7 Pro x64 环境中工作

我在 Maven 的 settings.xml 中有:

    <servers>
        <server>
            <id>LocalTomcatServer</id>
            <username>localTomcatAdmin</username>
            <password>password</password>
        </server>
    </servers>

在我的 tomcat-users.xml 文件中,我定义了:

    <tomcat-users>
        <role rolename="manager-gui"/>
        <role rolename="manager-script"/>
        <role rolename="admin"/>
        <user username="localTomcatAdmin" password="password" roles="manager-gui,manager-script,admin"/>
    </tomcat-users>

我还创建了一个 pom-deploy.xml,它是 pom.xml 的父级(位于同一级别),其中包含以下插件:

    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.0</version>
        <configuration>
             <server>LocalTomcatServer</server>
         <path>/<path to deploy to></path>
         <port>8080</port>
        </configuration>
    </plugin>

出于某种我无法理解的原因,当我运行 mvn -f pom-deploy.xml tomcat:deploy 时,我从 maven 得到以下输出。

    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 20.201s
    [INFO] Finished at: Wed Dec 12 09:00:21 EST 2012
    [INFO] Final Memory: 11M/149M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.codehaus.mojo:tomcat-maven-plugin:1.1:deploy  (default-cli) on project <project name>: Cannot invoke Tomcat manager: Server returned HTTP response code: 403 for
    URL: http://localhost:8080/manager/deploy?path=%2FTripTixRX&war= -> [Help 1]

每个其他生命周期目标都有效。

未为此项目配置 codehaus 插件。我已经尝试了 org.codehaus.mojo 插件并将其设置为http://127.0.0.1:8080/manager/html

输出似乎表明 url 没有被插件解析,但是,现在我已经切换到官方 tc7 插件,我认为这会缓解这个问题。

这几乎表明 maven 没有使用配置的插件。我已经清除了我的 .m2/repository 并重新开始。仍然没有运气。此时,我开始挖掘,发现它甚至没有下载tomcat7-maven-plugin。我在这里阅读了一些关于添加到 settings.xml 中的评论,我不情愿地这样做了。这对我来说似乎很违反直觉,但我想消除所有的可能性。我将 org.tomcat.apache.maven 添加到我的 settings.xml 文件中,用于 maven、rebuilt 和 blamo,它可以工作。

所以在这一点上,我很高兴它有效,但我很生气。在不修改每台机器的 maven settings.xml 配置的情况下,这不是完全消除了从一个 maven 环境到另一个环境的可移植性吗?我不应该为项目配置 Maven,但我认为配置应该完全驻留在 pom 中以获得最大的可移植性。

另外我不确定这是否是我的设置,但是没有关于“嘿,您配置的这个插件没有找到!”的消息。我不得不 -X -e 并将我的屁股拖过输出日志,甚至可以远程了解最终问题“可能”是什么。

让它发挥作用从来都不是问题,这就是为什么。似乎必须像这样定义它,从我的角度来看,项目可移植性已经出现了。这是我的 Maven 配置的结果还是这是常态?从阅读其他用户关于此的帖子来看,这似乎是 maven 中的正常现象。我想最终的结果是“我很高兴我回答了这个问题”,但我更关注如何以及为什么机制。

编辑:我正在运行的命令是: mvn -f pom-deploy.xml -U -Dmaven.test.skip=true clean package tomcat7:deploy -X -e

这是 maven 输出的一个片段,它仍然显示没有身份验证服务器:

    [DEBUG] Configuring mojo org.apache.tomcat.maven:tomcat7-maven-plugin:2.0:deploy from plugin realm ClassRealm[plugin>org.apache.tomcat.maven:tomcat7-maven-plugin:2.0, parent: sun.misc.Launcher$AppClassLoader@c22b29a]
    [DEBUG] Configuring mojo 'org.apache.tomcat.maven:tomcat7-maven-plugin:2.0:deploy'  with basic configurator -->
    [DEBUG]   (f) charset = ISO-8859-1
    [DEBUG]   (f) contextFile = `E:\workspace\<repo-name>\branches\<project name>-0.1\target\<project name>\META-INF\context.xml`
    [DEBUG]   (f) ignorePackaging = false
    [DEBUG]   (f) mode = war
    [DEBUG]   (f) packaging = war
    [DEBUG]   (f) path = /<project name>
    [DEBUG]   (f) update = false
    [DEBUG]   (f) url = http://localhost:8080/manager/html
    [DEBUG]   (f) version = 2.0
    [DEBUG]   (f) warFile = E:\workspace\<repo name>\branches\<Project name>-0.1\target\<project-name>.war
    [DEBUG] -- end configuration --
    [INFO] Deploying war to http://localhost:8080/<project name>
    [DEBUG] No server specified for authentication - using defaults
    Uploading: http://localhost:8080/manager/html/deploy?path=%2F<project name>

有了这个,它让我害怕:401 - 未经授权

4

0 回答 0