问题标签 [maven-profiles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
91 浏览

java - 激活配置文件时,Maven 自动调用发布准备

我对 Maven 配置文件没有太多经验......我不知道 Maven 是否可以做到这一点,但它绝对对我有用......

是否可以定义一个配置文件,该配置文件在调用时会自动运行 Maven 发布插件准备目标?

我解释得更好......

代替:

我想打电话

自动执行准备...

谢谢....

0 投票
1 回答
4544 浏览

maven - Maven:在子模块中激活配置文件的属性

我们有一个多模块 maven 项目,它有不同的平台可以运行,比如 JBoss 4 和 JBoss 7。我们指定platform属性,然后将其用作工件的分类器,并用于激活平台特定的配置文件子模块,例如:

在这些配置文件中,除其他外,我们指定了所提供依赖项的版本。例如,我们导入 jboss 父 pom:

因此,当我们将属性指定为命令行参数 ( -Dplatform=jboss71x) 时,它可以正常工作。

但是,当<properties>在根 pom.xml 的部分中设置属性时(我也尝试在父 pom 中设置它),看起来好像缺少来自父 pom 的版本:

maven 版本是最新的:3.2.1。

为什么会发生这种情况,我们如何在 pom.xml 中指定这个属性值,而不是在命令行中?

0 投票
1 回答
40 浏览

java - 如何对依赖项使用 Maven 分析

有没有办法在 Maven 分析中对依赖类使用配置文件。

我的问题是,我在一位家长下有两个项目。 product-core-wsproduct-core

product-core-ws是一个令人遗憾的网络服务。现在我想在 product-core 中创建两个配置文件,如下所示

当我clean install使用 product-core-ws 时,我需要根据给定配置文件的依赖项

例如,如果我使用

mvn clean install -P 一

,我需要我的war文件中的product-core-one。

我知道我可以直接在我的product-core-ws POM 文件中执行此操作。但我不想在那个 POM 中使用那些。我想通过product-core使用它们。

0 投票
1 回答
406 浏览

java - 覆盖maven中的系统属性

我有一个带有几个配置文件的 Web 应用程序 - 用于生产和本地测试;build 使用 maven 执行;logback 用于记录

所以一些日志写入文件 - 问题是:在生产中我们使用tomcat并且在服务器上设置了CATALINA_HOME,但在本地我们经常使用码头,所以甚至可能没有配置tomcat

所以在产品中我想这样写日志文件: ${catalina.home}/logs/profiler.%d{yyyy-MM-dd}.log

如何设置 maven 覆盖此 ${catalina.home} 属性

  1. 我如何从 maven 设置它(我需要系统属性还是只需要 maven 属性)
  2. 我可以让它有条件吗?(如果未在本地系统上设置,则使用 #1 中定义的属性)

多谢!塔蒂亚娜

0 投票
5 回答
5212 浏览

maven - 如何强制使用两个 Maven 配置文件中的一个?

我有一个 Maven 项目,它定义了两个单独的配置文件,developer并且release(肯定你明白了,here)。我希望随时激活这两个配置文件之一,但绝不要同时激活这两个配置文件。如果两者都以某种方式被激活,则此构建没有意义并且应该失败。如果两者都没有被激活,那么这个构建也没有任何意义并且应该失败。

我确信我可以编写一些自定义插件代码来实现这一点,我很可能最终会这样做,但我有兴趣使用 POM 配置来实现这一点(可能使用来自 Maven Central 的现有插件)。

应该可以使用-P( --activate-profiles) 激活插件,因此<activation>通过属性将不是一个有效的解决方案。使用的解决方案activeByDefault也无效,因为activeByDefault通常被称为陷阱,不可靠(实际上我们可能会激活其他配置文件,从而导致activateByDefault无法使用)。

非常感谢您的建议。

0 投票
7 回答
70158 浏览

java - 警告请求的配置文件“pom.xml”无法激活,因为它不存在

我正在尝试运行 maven 目标:验证并继续获取:[警告] 请求的配置文件“pom.xml”无法激活,因为它不存在。

在我的 org.eclipse.m2e.core.prefs 中:

我做错了什么?

0 投票
2 回答
2291 浏览

eclipse - 在 Intellij IDEA 中自动激活 maven 配置文件

有没有办法在 IntelliJ IDEA 中打开项目时自动激活 Maven 配置文件?

对于 Eclipse,这可以通过使用属性 m2e.version 进行激活来完成,我认为 IDEA 可能有类似的东西。

我基本上想要的是为 IDEA 提供一个单独的构建目录。这对于在命令行上运行 mvn 命令而不会弄乱 IDE 很有用。

0 投票
1 回答
14407 浏览

java - 如果未激活另一个配置文件,则激活 Maven 配置文件

该问题与Maven有关:如果未激活配置文件B,则仅激活配置文件A?,但它更具体。

如果我键入以下内容之一:

然后我想激活specificProfile配置文件。(+其他指定的配置文件)

如果我键入其他内容,例如:

然后我想激活defaultProfile(+其他指定的配置文件)。

主意:

例子:


我试图做这样的事情(在pom.xml中):

但它不起作用。

0 投票
2 回答
1617 浏览

maven - Why is Maven not using the expected profile?

I am using Maven to build some projects and it's using the gMaven plugin to build an RPM that includes the main artifact. I only want Maven to attempt to build the RPM on systems that have rpmbuild, and not on systems that do not, so I built two separate profiles, one that is supposed to be default and one that is supposed to activate when on a Unix family OS.

I could have sworn that I tested it and everything worked correctly, but now it is running the Unix-family profile even when I build on OSX. However, if I change the profile's OS family to "windows" it definitely knows it is not on a Windows machine and therefore runs the default profile.

Here is the relevant section of my pom.xml file:

In the Maven output:

However, Maven is setting rpmPhase to "package," instead of "none," which is not the expected behavior.

Can anyone see if I'm missing something here?

EDIT:

Also, if I set the OS family to something that doesn't exist, or if I comment out the activation block altogether then the default profile is used, so it seems that Maven is actively matching my OSX with a Unix family OS.

0 投票
0 回答
50 浏览

maven - 在 Maven 中复制 Ant“目标”

我知道有人问过这个问题,但我读过的所有回复都没有给我我需要的建议,所以如果这个答案被埋在某个地方而我还没有找到,我深表歉意。

我正在使用 Maven 部署我们的系统,完整的部署需要按顺序执行几个步骤。如果对中间步骤进行了更改,则只需重新部署该步骤及其相关步骤。这些步骤非常耗时,因此从头开始部署所有内容(目前约 35 分钟)非常痛苦。(对于那些感兴趣的人,有远程数据库部署,然后是创建和部署 2 个基础 docker 镜像和几个 docker 镜像/容器。)

部署步骤基本上是“通过 scp 将这些文件复制到远程服务器,然后通过 sshexec 运行此命令”。因此,这些步骤目前是一项很长的单蚂蚁任务。

如果我正确使用 Ant,我将能够指定目标并这样做。我对 Maven 并不陌生,但我不知道处理这种过程的正确惯用方式。我看到有人建议使用配置文件,这似乎是最合适的解决方案,但是有一个步骤我无法复制。

假设我有 5 个步骤,步骤 1、2、3、4 和 5。5 取决于 4,4 取决于 3,等等。我可以为每个步骤设置一个配置文件步骤,然后运行mvn -P 1,2,3,4,5以获得我需要的内容。如果我只对 3 进行更改,那么我可以运行mvn -P 3,4,5,但是我的问题是还有更多的步骤,没有那么明显的编号,并且在我们构建我们的产品时,它是目前其他开发人员的移动目标。

有没有办法,使用配置文件或其他方式,让我和我的开发人员基本上说mvn -P stepX在步骤“x”中设置的配置文件说“运行配置文件 X,然后 Y,然后 Z”?

非常感谢,米奇。