是否有可能以某种方式告诉maven部署:文件目标是根据项目的版本是快照/发布来部署到两个独立的工件?
我希望可能有一个属性表明该版本具有-SNAPSHOT前置的事实,或者可能是要部署到的默认工件(已经根据版本号计算出来).
我想过使用两个不同的配置文件,并通过解析pom.xml文件来解决它在ant中的快照,但如果可能的话,我宁愿使用更干净的解决方案.
目前,我的部署插件如下所示,但这只是部署到发布工件,无论版本如何;
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>deploy-zip-created-by-ant-to-artifactory</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<repositoryId>${project.distributionManagement.repository.id}</repositoryId>
<url>${project.distributionManagement.repository.url}</url>
<file>${project.basedir}/Build/deploy/MyArtifact.zip</file>
<pomFile>${project.basedir}/MyArtifact-pom.xml</pomFile>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
非常感谢
将组件发布到Nexus存储库时遇到问题,Maven上传文件两次:
我使用以下命令启动打包/部署(请参阅底部的pom.xml文件):
mvn clean package deploy:deploy-file -e -f pom.xml
这是处理部署阶段时maven输出控制台的片段(6个第一行是正确的,但注意到最后两行有pom groupId/artifactId/version):
[INFO] --- maven-deploy-plugin:2.8.2:deploy-file (default-cli) @ assemblage-playbook ---
Uploading: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/1.0/COMPOSANT-A_1.0.tar.gz
Uploaded: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/1.0/COMPOSANT-A_1.0.tar.gz (2 KB at 2.7 KB/sec)
Downloading: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/maven-metadata.xml
Downloaded: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/maven-metadata.xml (321 B at 4.6 KB/sec)
Uploading: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/maven-metadata.xml
Uploaded: http://urlRepo:8080/nexus/content/repositories/snapshots/COMPOSANTS/COMPOSANT-A/maven-metadata.xml (321 B at 1.6 KB/sec)
Downloading: http://urlRepo:8080/nexus/content/repositories/snapshots/com/com.mycompany/assemblage-playbook/1.0-SNAPSHOT/maven-metadata.xml
Uploading: http://urlRepo:8080/nexus/content/repositories/snapshots/com/com.mycompany/assemblage-playbook/1.0-SNAPSHOT/assemblage-playbook-1.0-20150209.154427
Run Code Online (Sandbox Code Playgroud)
这是我的pom.xml文件:
<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>
<artifactId>assemblage-playbook</artifactId>
<packaging>pom</packaging>
<name>assemblage-playbook</name>
<parent>
<groupId>com.mycompany</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../../../parent/pom.xml</relativePath>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<descriptors>
<descriptor>assembly/playbook-assembly.xml</descriptor>
</descriptors>
<finalName>COMPOSANT-A-1.0</finalName> …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过GitHub 操作进行 maven 部署,但出现以下错误:-
gpg: directory '/home/runner/.gnupg' created
gpg: keybox '/home/runner/.gnupg/pubring.kbx' created
gpg: no default secret key: No secret key
gpg: signing failed: No secret key
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13.272 s
[INFO] Finished at: 2020-04-06T12:18:44Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.5:sign (sign-artifacts) on project pretty-simple-jar: Exit code: 2 -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
我知道我需要以某种方式在运行操作工作流的虚拟运行器中导入我的 gpg 密钥,但我无法找到通过 GitHub 操作工作流在虚拟运行器中导入我的密钥的方法?
以下是我的工作流程:-
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up …Run Code Online (Sandbox Code Playgroud) 我有一个Web应用程序的pom文件,一个构建配置文件,它为qa测试做了一些必要的事情(在我的代码中).
我在svn上有这个代码,这个代码是在Hudson中编译的,它在nexus中部署了工件.
Hudson有两个职位,一个是qa profile(-P qa),另一个是客户.
我需要的是,我在部署阶段更改了我的qa配置文件中的工件名称,以便nexus有两个不同的war文件,一个用于qa,另一个用于客户.
我使用(谷歌搜索之后)以下看起来像什么都没有在hudshon!
<profile>
<id>qa</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.5</version>
<configuration>
<classifier>qa</classifier>
</configuration>
</plugin>
</plugins>
</build>
</profile>
Run Code Online (Sandbox Code Playgroud)
有人的想法吗?
我为这篇文章的篇幅感到抱歉,但是如果不提供图片,我就很难让它更简洁.我最近继承了maven 3.0多模块项目的build-master的工作.问题是项目/模块的结构是一场灾难.从事物当前存储在源代码管理(我们使用RTC)到模块的pom结构的方式,我正在试图让每次完成一个完整的构建周期.
随着项目层次结构的进行,所有模块都存储为"平面"; 即:一切都处于同一水平.我有一个父pom,所有模块都依赖于父.但是,父级与我的所有其他模块处于同一级别.
例如:
c:\dev\MyEarProject
+ parent-pom
- pom.xml
+ module1
- pom.xml (depends on parent-pom)
- src
- main
- ...
+ module2
- pom.xml (depends on parent-pom)
- src
- main
- ...
+ module3
- pom.xml (depends on parent-pom)
- src
- main
- ...
Run Code Online (Sandbox Code Playgroud)
父pom定义了构建项目所需的所有模块,以及在不同子模块中使用的工件版本号的一堆属性:
<modules>
<module>../module1</module>
<module>../module2</module>
<module>../module3</module>
</modules>
<properties>
<org.springframework.version>3.0.5.RELEASE</org.springframework.version>
<slf4j.version>1.6.4</slf4j.version>
<repositoryAddress>${snapshots.repo.url}</repositoryAddress>
<my.hibernate-module.dao.impl>1.2.3</my.hibernate-module.dao.impl>
<my.hibernate-module.dao.api>1.2.3</my.hibernate-module.dao.api>
</properties>
Run Code Online (Sandbox Code Playgroud)
反过来,每个模块的pom通过pom的工件编号依赖于父pom:
<parent>
<groupId>com.cws.cs.lendingsimulationservice</groupId>
<artifactId>parent-pom</artifactId>
<version>1.0.6</version>
</parent>
Run Code Online (Sandbox Code Playgroud)
为了使事情更加混乱,实际的工件名称可能会或可能不会(取决于模块)与模块路径匹配.例如,module1可以位于路径中c:\dev\MyEarProject\module1但具有工件名称hibernate-module.但是,由于它存储在RTC中的方式,目录module1在签出时被调用.
当然,构建一切的最简单方法是进入c:\dev\MyEarProject\parent-pom\并运行mvn clean …
我为Vaadin/Hibernate/Spring项目创建了一个工作maven原型.我能够将这个原型安装到我的本地存储库并使用它来生成新的maven项目.
现在我想将原型部署到我的公司内部存储库,因此它可能被其他开发人员使用.但是,当我运行时,mvn deploy我收到以下错误消息:
[ERROR] Failed to execute goal org.apache.maven.plugins:
maven-deploy-plugin:2.7:deploy (default-deploy) on project
vaadin-hibernate-archetype: Failed to deploy artifacts/metadata:
No connector available to access repository maven.planet-ic.de
(maven.planet-ic.de/planet-ic-releases) of type default using the
available factories WagonRepositoryConnectorFactory -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
是什么connector,我很想念?
编辑:我不是要求有人来解决我的问题,只是要了解一下'connector'是什么.
这是我的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>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<groupId>de.planetic.maven.archetype.vaadin</groupId>
<artifactId>vaadin-hibernate-archetype</artifactId>
<version>1.1.0</version>
<packaging>jar</packaging>
<inceptionYear>2013</inceptionYear>
<description>
This archetype generates a Vaadin application for use with Hibernate, and to be deployed to a …Run Code Online (Sandbox Code Playgroud) 我正在使用Apache Maven 3.0 Nexus开源版,版本:1.8.0.1
这是我的pom.xml的一部分
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.5</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.1</version>
</plugin>
<distributionManagement>
<repository>
<id>nexus</id>
<name>nexus</name>
<url>http://myrepo/nexus/content/repositories/releases</url>
</repository>
</distributionManagement>
Run Code Online (Sandbox Code Playgroud)
这是一个非常简单的项目.当我做
mvn release:prepare
mvn release:perform
Run Code Online (Sandbox Code Playgroud)
一切顺利:
...
[INFO] [INFO] --- maven-deploy-plugin:2.5:deploy (default-deploy) @ simple ---
[INFO] Uploading: http://myrepo/nexus/content/repositories/releases/...pom
[INFO] 4 KB
[INFO] 5 KB
[INFO]
[INFO] Uploaded: http://myrepo/nexus/content/repositories/releases/....pom (5 KB at 1.0 KB/sec)
[INFO] Downloading: http://myrepo/nexus/content/repositories/releases/.../maven-metadata.xml
[INFO] 603 B
[INFO]
[INFO] Downloaded: http://myrepo/nexus/content/repositories/releases/.../maven-metadata.xml (603 B at 1.5 KB/sec)
[INFO] Uploading: http://myrepo/nexus/content/repositories/releases/.../maven-metadata.xml
[INFO] 634 B
[INFO]
[INFO] Uploaded: http://myrepo/nexus/content/repositories/.../maven-metadata.xml (634 B …Run Code Online (Sandbox Code Playgroud) 我希望能够在没有主工件(JAR,WAR等)的情况下仅部署POM工件(文件),运行时mvn deploy版本是SNAPSHOT版本.
为什么?
我们有几个开发人员在开发多个Maven项目.我们有一个Hudson服务器,每个Maven项目和版本都有一个作业(例如foo-1.2,foo-1.3).每个作业都构建项目并将其部署到Nexus服务器(成功时).正在开发的Maven项目通过在版本中使用-SNAPSHOT后缀来标记.例如:1.2-SNAPSHOT,1.3-SNAPSHOT.
以下是由于此体系结构导致开发人员工作受损的示例场景.
假设两个Maven项目:foo-core和foo-webapp,均为1.2-SNAPSHOT版本.
mvn installfoo-webapp上运行.Maven正在检查Nexus,并发现Nexus中有更新版本的foo-core.它下载它(填充了开发人员B的更改)而不是编译失败,因为开发人员A所做的更改不在位于本地存储库中的jar中.下载将覆盖开发人员A安装在那里的文件.现有解决方案
我查看了maven-deploy-plugin,但是这个插件部署了附加到项目的所有工件.如果他们有办法配置要部署的工件,那就太好了.
问题:有没有办法解决这个问题而不依靠编写我自己的部署插件,基于maven-deploy-plugin?
我知道,maven deploy命令贯穿整个生命周期.我的问题是,我需要花费很多时间.让我解释:
两次建造都需要花费很多时间.是否有类似" 请简单地将所有构建的工件从我的本地存储库部署到POM定义的存储库并跳过整个生命周期 "?
考虑我有一个 maven 插件项目,我想将它发布到 Github 的公共 maven 存储库,称为“Github Packages”。我已经按照说明完成了所有工作,对于普通项目,一切开箱即用。但是对于带有 Packaging=maven-plugin 的 maven 插件项目,该指令不起作用。
在构建日志中,我看到如下内容:
[警告] 无法从/向 github ( https://maven.pkg.github.com/user-name/repo-name )传输元数据 repo-name/maven-metadata.xml :无法传输文件: https:/ /maven.pkg.github.com/user-name/repo-name/group-id/maven-metadata.xml。返回码是: 422 , ReasonPhrase:Unprocessable Entity。
似乎maven deploy 插件需要在group-id 的根目录下有maven-metadata.xml,但是找不到它,也没有人把它放在那里。如何解决这个问题呢?
我使用 Apache Maven 3.3.9,并使用以下命令:
mvn clean deploy
Run Code Online (Sandbox Code Playgroud)
--Addition: 我正在使用的 pom 文件示例:
<?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>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>github</id>
<name>GitHub my_repo Apache Maven Packages</name>
<url>https://maven.pkg.github.com/my_nick/my_repo</url>
</repository>
</repositories>
<version>1.0.0</version>
<groupId>x</groupId>
<artifactId>some-plugin</artifactId>
<packaging>maven-plugin</packaging>
<dependencies> …Run Code Online (Sandbox Code Playgroud) java maven-plugin maven maven-deploy-plugin github-package-registry
maven ×9
java ×2
maven-3 ×2
maven-plugin ×2
nexus ×2
github ×1
gnupg ×1
multi-module ×1
profile ×1
tycho ×1