在 Maven POM 中禁用 distributionManagement
Disable distributionManagement in Maven POM
我正在尝试 运行 在我的 Liferay portlet 上使用 Maven 实现 mvn deploy
目标,但出现以下错误
[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
我知道如果您不在 pom.xml 中包含 <distributionManagement />
标记,此错误将 return,但是我不希望将其打包到远程位置并且想改为部署到我的本地 tomcat 实例;这可以配置吗?
错误与 dependencyManagement
无关,而是 distributionManagement
Deployment failed: repository eleme
nt was not specified in the POM inside distributionManagement
element or in -DaltDeploymentRepository=id::layout::url
parameter
也可以使用 altDeploymentRepository
选项提供替代方案(如果您不想将其放入 pom.xml
文件):
Specifies an alternative repository to which the project artifacts should be deployed ( other than those specified in <distributionManagement>
).
Format: id::layout::url
第一个元素 id
必须与 settings.xml
文件中定义的 server
匹配(您在其中指定用于特定服务器的凭据)。
布局和 url 特定于目标存储库。
然后您可以调用命令:
mvn deploy -DaltDeploymentRepository=test:Maven2:http://somewhere:someport
其中test
是server element in your Maven settings
的id
<servers>
<server>
<id>test</id>
<username>my_login</username>
<password>my_password</password>
</server>
</servers>
更新
根据最新的说明(通过评论和编辑),这里有一些要点:
- Maven
deploy
phase 用于
done in the build environment, copies the final package to the remote repository for sharing with other developers and projects.
- 因此,在您的情况下,您不需要使用
deploy
阶段或 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
添加到您的 Maven settings.xml
servers
部分中的以下内容:
<server>
<username>maven</username>
<password>maven</password>
<id>tomcat8</id>
</server>
注意上面设置和插件 configuration
之间的匹配 tomcat8
id,server
元素。
为部署配置 Tomcat
在tomcatconf
文件夹中,配置tomcat-users.xml
文件:
<role rolename="manager-script"/>
<user username="maven" password="maven" roles="manager-gui,manager-script"/>
注意与我们在 Maven 设置中实际指定的匹配的凭据。
试一试
然后从命令行你最终可以调用:
mvn tomcat7:deploy
如果您不想配置settings.xml
或pom.xml
,则需要通过命令行传递几个参数,如下所示:
mvn org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy \
-Durl=http://localhost:8080/manager/text \
-Dusername=maven -Dpassword=maven
注意:\
并添加了换行符以提高可读性
在其 deploy
目标的官方文档中查看选项的完整列表。
我正在尝试 运行 在我的 Liferay portlet 上使用 Maven 实现 mvn deploy
目标,但出现以下错误
[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
我知道如果您不在 pom.xml 中包含 <distributionManagement />
标记,此错误将 return,但是我不希望将其打包到远程位置并且想改为部署到我的本地 tomcat 实例;这可以配置吗?
错误与 dependencyManagement
无关,而是 distributionManagement
Deployment failed: repository eleme nt was not specified in the POM inside
distributionManagement
element or in-DaltDeploymentRepository=id::layout::url
parameter
也可以使用 altDeploymentRepository
选项提供替代方案(如果您不想将其放入 pom.xml
文件):
Specifies an alternative repository to which the project artifacts should be deployed ( other than those specified in
<distributionManagement>
). Format:id::layout::url
第一个元素 id
必须与 settings.xml
文件中定义的 server
匹配(您在其中指定用于特定服务器的凭据)。
布局和 url 特定于目标存储库。
然后您可以调用命令:
mvn deploy -DaltDeploymentRepository=test:Maven2:http://somewhere:someport
其中test
是server element in your Maven settings
<servers>
<server>
<id>test</id>
<username>my_login</username>
<password>my_password</password>
</server>
</servers>
更新
根据最新的说明(通过评论和编辑),这里有一些要点:
- Maven
deploy
phase 用于done in the build environment, copies the final package to the remote repository for sharing with other developers and projects.
- 因此,在您的情况下,您不需要使用
deploy
阶段或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
添加到您的 Maven settings.xml
servers
部分中的以下内容:
<server>
<username>maven</username>
<password>maven</password>
<id>tomcat8</id>
</server>
注意上面设置和插件 configuration
之间的匹配 tomcat8
id,server
元素。
为部署配置 Tomcat
在tomcatconf
文件夹中,配置tomcat-users.xml
文件:
<role rolename="manager-script"/>
<user username="maven" password="maven" roles="manager-gui,manager-script"/>
注意与我们在 Maven 设置中实际指定的匹配的凭据。
试一试
然后从命令行你最终可以调用:
mvn tomcat7:deploy
如果您不想配置settings.xml
或pom.xml
,则需要通过命令行传递几个参数,如下所示:
mvn org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy \
-Durl=http://localhost:8080/manager/text \
-Dusername=maven -Dpassword=maven
注意:\
并添加了换行符以提高可读性
在其 deploy
目标的官方文档中查看选项的完整列表。