【问题标题】:IntelliJ maven vs normal mavenIntelliJ maven 与普通 maven
【发布时间】:2018-07-02 13:12:51
【问题描述】:

每当我运行 maven 命令时,我想添加自己的命令来删除 mvn 存储库中的特定文件夹。

对于通过命令提示符使用 maven,这非常简单,因为我们只需更新 apache-maven-3.5.3\bin\mvn.cmd

但是,我注意到当我们从 intelliJ Maven projects Tool Window 运行 mvn 时,运行命令如下:

    C:\mbakOrg\Oracle\JDK\jdk1.8.0_60\bin\java -Dmaven.multiModuleProjectDirectory=
C:\mbakOrg\_CODE\MNE_ARCHIT_GIT\_REPOS\sg-template-store -Dmaven.home=C:\mbakOrg\build\apache-maven-3.5.3 -
Dclassworlds.conf=C:\mbakOrg\build\apache-maven-3.5.3\bin\m2.conf "-javaagent:C:\mbakOrg\devel\JetBrains\IntelliJ IDEA 
2017.1.3\lib\idea_rt.jar=42633:C:\mbakOrg\devel\JetBrains\IntelliJ IDEA 2017.1.3\bin" -Dfile.encoding=UTF-8 -classpath
 C:\mbakOrg\build\apache-maven-3.5.3\boot\plexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -Didea.version=2017.1.3 clean install

那么我将如何添加一个每次都会运行的命令? 由于InteliJ中的maven是使用自定义方式运行maven的。

说明

我的问题基本上是 mvn -U 命令始终无法正确提取最新代码。此外,我们都在使用经常更新的父项目的快照来解决问题。

【问题讨论】:

  • 为什么要删除本地缓存中的目录?您应该使用mvn package 而不是mvn install
  • @khmarbaise 我的问题基本上是 mvn -U 命令始终无法正确拉取最新代码。此外,我们都在使用经常更新的父项目的快照来解决问题。
  • newest code all the time 是指预先使用适当代码部署的项目...您是否使用依赖于此代码的依赖项以及是否使用 SNAPSHOT 依赖项?您能否展示您正在使用的 pom 文件的示例以及如何将代码部署到存储库管理器?
  • 我的意思是我们有一个父 Pom 和依赖项,它实际上是作为一个部署的快照托管在一个 nexus 存储库上的。另一个团队最近进行了很多更改,不幸的是,这只是一个开始,因此他们没有部署版本。因此,因为它是一个快照,所以东西发生了变化,并且正在破坏的东西可能不再破坏(只要 -U 标志已经提取了最新的东西)。所以碰巧我们说“它不起作用”。他们说“使用 -U”,对我们有用。如果我们删除缓存,它确实有效:(
  • 在不知道细节和 pom 以及其他人如何通过mvn deploy 进行部署以及您如何在 pom 中准确定义依赖关系的情况下,我不能说是否有问题解决与否..进一步mvn -U clean package 应该在不清理本地缓存的情况下工作...

标签: java maven intellij-idea


【解决方案1】:

我强烈反对修改mvn.cmd。即使您知道如何在命令行和 InteliJ 中执行此操作,然后考虑迁移到某种持续集成框架,例如 Jenkins,它将使用默认的 mvn.cmd
如果无法使用现有的 Maven 工具实现您想要的功能,我建议您编写自己的 Maven 插件(请参阅this tutorial),并将所需的功能放在那里。它将保证这段特定的代码将在所有环境中执行,这是确保每次启动命令的方法。

【讨论】:

  • 我的问题基本上是 mvn -U 命令不能一直正确拉取最新的代码。此外,我们都在使用经常更新的父项目的快照来解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多