3

我正在尝试mvn deploy在我的 Liferay portlet 上使用 maven 运行目标,但出现以下错误

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.
2:deploy (default-deploy) on project MyPortlet: Deployment failed: repository eleme
nt was not specified in the POM inside distributionManagement element or in -Dal
tDeploymentRepository=id::layout::url parameter -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o
rg.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on pro
ject RiskID: Deployment failed: repository element was not specified in the POM
inside distributionManagement element or in -DaltDeploymentRepository=id::layout

我知道如果您不在<distributionManagement />pom.xml 中包含该标记,则会返回此错误,但是我不希望将其打包到远程位置,而是希望部署到我的本地 tomcat 实例;这可以配置吗?

4

1 回答 1

8

错误不是关于dependencyManagement,而是distributionManagement

部署失败:未在 POM 内部distributionManagement元素或-DaltDeploymentRepository=id::layout::url参数中指定存储库元素

pom.xml还可以使用以下altDeploymentRepository选项提供替代方案(如果您不想将其放在文件中):

指定项目工件应部署到的替代存储库(除了在 中指定的那些<distributionManagement>)。格式:id::layout::url

第一个元素 ,id必须与文件中server定义的a 匹配settings.xml(您在其中指定用于特定服务器的凭据)。

然后,layour 和 url 特定于目标存储库。

然后,您可以调用该命令:

mvn deploy -DaltDeploymentRepository=test:Maven2:http://somewhere:someport

Maven 设置中服务器元素test的 id在哪里

<servers>
    <server>
      <id>test</id>
      <username>my_login</username>
      <password>my_password</password>
    </server>
</servers>

更新
根据最新的澄清(通过评论和编辑),这里有一些要点:

  • Mavendeploy 阶段适用于

    在构建环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享。

  • 因此,在您的情况下,您不需要使用deployphase 或maven-deploy-plugin.
  • 由于 Tomcat 是目标服务器,因此您需要使用tomcat7-maven-plugin

以下是一些说明:

配置您的pom.xml
添加到您pom.xml的以下内容:

<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</server>
        <path>/${project.build.finalName}</path>
    </configuration>
</plugin>

settings.xml在部分中配置您的
Add to your Maven :settings.xmlservers

<server>
    <username>maven</username>
    <password>maven</password>
    <id>tomcat8</id>
</server>

请注意设置和上面的插件元素之间的匹配tomcat8id 。configurationserver

配置Tomcat进行部署
在tomcatconf文件夹中,配置tomcat-users.xml文件:

  <role rolename="manager-script"/>
  <user username="maven" password="maven" roles="manager-gui,manager-script"/>

请注意与我们在 Maven 设置中实际指定的凭据匹配的凭据。

试一试
然后你终于可以从命令行调用:

mvn tomcat7:deploy

如果您不想配置settings.xmlnor pom.xml,则需要通过命令行传递几个参数,如下所示:

mvn org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy \ 
      -Durl=http://localhost:8080/manager/text \
      -Dusername=maven -Dpassword=maven

注意:\并添加换行符以提高可读性

在其deploy目标的官方文档中查看完整的选项列表。

于 2016-09-01T12:56:33.507 回答