我有一个Maven项目,它应该将编译后的文件部署到另一个文件夹中。目前,我通过指定参数altDeploymentRepository
:
mvn -DaltDeploymentRepository=snapshot-repo::default::file:/home/user/some/folder/mvn-repo/snapshots deploy
我的问题:是否有可能做一个简单的mvn deploy
而不是将参数声明移动到pom.xml ?如果是,怎么做?
有人问我为什么要这样做。我已经将我的项目与源代码和Maven存储库分离为Maven项目。两者都是不同的Github项目,因此在不同的文件夹中。我配置了Maven,以便将目标文件部署到repo文件夹中。在这之后,我只需要git添加,提交和推送更改。
如果有任何方法将目标文件直接推到所需的Github repo与maven deploy
或使这个过程更简单,我洗耳恭听!
只是为了确保您真正理解Maven中"部署"的含义,因为"部署到其他文件夹"作为您正在做的事情是相当奇怪的。
Maven Deploy意味着将工件部署到远程存储库。远程存储库是Maven搜索工件并下载到本地存储库的地方。它很少是"另一个文件夹"。我们通常使用<distributionManagement>
来配置要部署的远程存储库。通常,我们使用altDeploymentRepository
来部署到distrubutionManagement
中配置的不同的远程repo。
如果你只是想把你构建的工件放到一个单独的文件夹中,而不是针对"远程存储库",我相信汇编(或类似的插件)是你所需要的。
与上面的答案类似,可以将构建与部署隔离开来,方法是首先将构建作为构建的一部分部署到目标文件夹下的文件系统repo,然后使用wagon插件将本地(和私有)暂存库同步到更公共的存储库。
预先道歉,这是基于*nix的(参见pwd
)
mvn -DaltDeploymentRepository=local-staged-repo::default::file://`pwd`/target/staged-repo
clean
deploy
也可以在pom.xml中编码,如下所示:
<pluginManagement>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
<configuration>
<altDeploymentRepository>
staged-repo::default::file:${project.basedir}/target/staged-repo
</altDeploymentRepository>
</configuration>
</plugin>
</pluginManagement>
...
然后在稍后的阶段,从项目的根文件夹运行。您可以使用以下插件将您的分级仓库合并到根pom.xml的目标文件夹中的一个更永久的存储库:
mvn org.codehaus.mojo:wagon-maven-plugin:1.0-beta-5:merge-maven-repos
-Dwagon.source=file://`pwd`/target/staged-repo
-Dwagon.target=http://<some-repo>/release
-Djava.io.tmpdir=/tmp
好的,这比预期的要简单。我需要添加一个配置块到我的插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.7</version>
<configuration>
<altDeploymentRepository>
snapshot-repo::default::file:/home/user/some/folder/mvn-repo/snapshots
</altDeploymentRepository>
</configuration>
<dependencies>
<dependency>
<groupId>com.google.code.maven-svn-wagon</groupId>
<artifactId>maven-svn-wagon</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
</plugin>