- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么这不起作用?如何从属性文件中选择版本号。
在pom.xml中读取属性
<project>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
</execution>
<configuration>
<files>
<file>dev.properties</file>
</files>
</configuration>
</executions>
</plugin>
</plugins>
</build>
</project>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj.aspectjrt.version}</version>
</dependency>
最佳答案
从命令行启动Maven时,它会经历多个阶段。这是对这些阶段的伪描述,我有意简化确切的顺序(可能会说出一些稍微不正确/乱序的风险),以便您了解尝试执行的操作为何不起作用。
-Dname=value
在命令行上定义的任何属性都将被注入(inject)MavenSession
-N
表示仅构建根pom.xml
,-pl
允许指定要构建的模块列表,-am
和-amd
允许分别从-pl
指定的模块添加上游或下游模块。目前,Maven尚未解析任何pom.xml
文件。 -P
配置文件激活规则以查看要激活的配置文件。 pom.xml
文件。首先从加载并解析根pom.xml
(即当前目录中的根pom.xml
)开始(或者,如果您使用-f
指定了另一个<modules>
,则选择该根)。最初的解析只是专注于确定要构建的项目列表。仅考虑了概要文件激活,因为它可能会影响可用的pom.xml
列表。 pom.xml
中的“组ID”,“ Artifact ID”,“版本”和“包装”坐标不能包含属性,因为此时尚未对pom.xml
中的属性进行解析。 (细心的读者还将看到,这也解释了为什么您不能基于pom.xml
中的属性来激活配置文件,因为在此阶段仅解析了系统属性)<properties>
文件进行更多解析,以构建构建扩展列表(如果有)和插件列表。在此阶段,解析需要评估每个项目中的/project/build/extensions
,因此这是对它们进行评估并将其“注入(inject)”有效模型的时候。因此,您可以使用系统属性和pom属性来定义(xpath)/project/build/pluginManagement/plugins/plugin
,/project/build/pluginManagement/plugins/plugin/dependencies
,/project/build/plugins/plugin
,/project/build/plugins/plugin/dependencies
和pom.xml
中的坐标和其他依赖项。 /project/dependencyManagement/dependencies/dependency
文件中定义的项目依赖项列表。这是因为反应堆内的另一个项目可能会产生依赖性,从而迫使对项目执行进行排序。因此,您可以使用系统属性和pom属性来定义(xpath)/project/dependencies/dependency
和initialize
中的坐标和其他依赖关系,但是请注意,此时尚未执行任何插件。 initialize
阶段开始并执行绑定(bind)到该阶段的所有插件...以类似的方式沿阶段列表然后是列表继续项目。还要注意,clean package foo:bar site
阶段仅作为默认构建生命周期的一部分执行。它不会在默认的清理或默认站点生命周期上执行,也不在任何自定义生命周期上执行。 (细心的读者将得出结论,这突出了该问题正在尝试的技术的另一个问题)。注意:请记住,聚合器目标在反应堆中形成“中断”,因此,如果您要求Maven运行foo:bar
(其中clean package
是聚合器mojo目标),则foo:bar
将针对反应堆中的所有项目运行,然后site
将针对根目录运行,然后pom.xml
将针对反应堆中的所有项目运行。换句话说,构建计划将采用最长的非聚合器目标和阶段的连续运行,再除以聚合器目标的最长连续运行。 <configuration>
评估MavenSession
。此时,Maven可以使用系统属性,在pom中指定的属性以及由先前执行的mojos注入(inject)<configuration>
的任何属性。因此/project/build/directory
可以引用任何这些属性...${some-property-i-will-set-via-a-mojo}
设置为<configuration>
,然后从/project/build/directory
引用它,那么可悲的消息是(xpath)pom.xml
在任何插件执行之前都会被评估为有效的${project.build.directory}
,因此${some-property-i-will-set-via-a-mojo}
将被赋予文字值java.io.File
,并且在MavenProject
中类型为new File(project.getBaseDir(),"${some-property-i-will-set-via-a-mojo}")
,因此您实际发生的是<configuration>
。如果您要注入(inject)的File
字段的类型为<configuration>
,则不需要类型转换,因此将直接注入(inject)该值,并且不会进行任何属性替换。/project/(parent/)?/(groupId|artifactId|version|packaging)
部分中的“mojo注入(inject)”属性(例如Mojo's Properties Maven Plugin提供的属性)一起使用。在这些部分之外,它将不起作用。 ${...}
中非常危险,因为您无法控制将项目作为传递依赖项引入时将定义哪些系统属性。在
/project/(parent/)?/(groupId|artifactId|version|packaging)
中使用
pom.xml
扩展应该被认为等同于以200kph的速度驾驶汽车,该汽车具有从方向盘上伸出的30cm(12英寸)金属钉,代替了安全气囊……哦,没有安全带……您我只喝了10单位酒精和两行可卡因。
settings.xml
属性(和
/project/(parent/)?/(groupId|artifactId|version|packaging)
属性)
<configuration>
中永远不可用(因为在评估这些字段时尚未解析它们),也不能用于考虑 Activity 配置文件(同样,在评估配置文件激活时也没有对其进行解析) )
String
部分中工作,并且(由于注入(inject)的Mojo
<configuration>
参数的递归插值)在间接使用时可能会起作用,但是鉴于所涉及的不确定性,建议将它们的使用仅限于插件和报告的
.properties
部分。
pom.xml
文件中提取依赖关系来指定其依赖关系,则当从Maven存储库中提取依赖关系时,Maven无法复制该依赖关系。因此,Maven将无法确定依赖性。因此它永远无法工作。
关于maven - 从Maven中的POM文件读取属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14725197/
我正在使用 Maven 3.x,我的父 pom 和子 pom 中有以下结构。 父类 com.mygoogle.sample workorder 1.0-SNAPSHOT pom 1.0-SN
我已将各个项目中的所有存储库配置重构为一个父 pom,该父 pom 是为了对存储库和分发管理等内容进行单点配置的特定目的而创建的。据我了解,这应该是最佳实践。将我的父 pom 部署到 Nexus 服务
我尝试使用 mvn help:effective-pom 命令在示例应用程序上生成有效的 pom。 http://books.sonatype.com/mvnref-book/reference/po
在一个项目中,我们有一个名为时间戳的属性,它没有在父 POM 和子 POM 中定义,但仍然可以在 pom.xml 中访问。任何线索将不胜感激。 最佳答案 它可以由插件设置(如 https://www.
我在使用“uploadArchives”上传存档时收到“无法初始化 POM pom-default.xml:无法验证 POM”。我也尝试了 maven-publish 插件,但仍然没有成功。我们将不胜
我创建了一个程序,使用 HTML5 canvas 绘制一个 pom pom,参数大小、x、y、蓬松度和颜色。 pom pom 是通过从中心出来的画线创建的,参数蓬松度决定了从中心出来的股数。我有一个确
我正在关注maven的教程。我有一个非常简单的项目,里面有几个模块。在模块 pom 上,我想通过 ${parent.groupid} 和 ${parent.version} 引用主项目 pom 版本和
当我构建我的项目时,我收到以下警告: [INFO] ------------------------------------------------------------------------ [
我正在尝试构建一个 Maven 项目。我的其他团队成员能够毫无问题地构建它。我收到以下错误: [WARNING] The POM for org.hectorclient:hector-core:ja
我目前正在为 Maven 苦苦挣扎:我有一个由几个嵌套模块组成的复杂项目,对于其中一些模块,我在 POM 中有类似的配置。 我想让它干净。实际上,我想定义一个“runnable-jar”通用配置并在某
我正在将 maven Artifact 推送到 nexus,对于版本号小于子 POM 的父 POM 是否有任何影响? 最佳答案 据我所知没有。多模块项目中的模块版本可能以任何可能的方式有所不同。但是,
我在 Eclipse (Helios) 中有一个项目,带有 Maven pom.xml。我的项目是一个将使用 Hibernate、MySQL 的 Web 应用程序。 但是我在正确处理 pom.xml
repository我的 build.grade 部分已: mavenLocal() //maven { url { 'http://192.168.2
在多模块项目结构中 myApp |-moduleA |---pom.xml |-moduleB |---pom.xml |-pom.xml 如果我在 parent.pom 中有以下属性 4
我为 Maven 插件编写了代码,用于更新 pom 文件中的版本号。但是,当我尝试保存新的 pom 时,它被保存为有效的 pom。有没有办法将其保存为解析之前的样子?谢谢! private Maven
我有一个父 pom 在 pluginManagement 中定义了插件的一些配置项,其中有一个特定的配置。我不想在 child pom 中。 我尝试覆盖我的子 pom 中的其他配置项,这有效,但“删除
我不确定这是否受 Maven 支持。我很感激我能得到的任何帮助。 我有一个定义依赖项和排除项的父 pom。我无法更改父 pom: foo bar 1.0
当前场景: 父pom有一个distributionManagement部分,里面定义了两个repositories(releases和snapshots);引用如下: 父 pom:
似乎有几种方法可以在多项目构建中构建父 pom,我想知道是否有人对每种方式的优点/缺点有任何想法。 拥有父 pom 的最简单方法是将其放在项目的根目录中,即 myproject/ myprojec
我想在我的 Maven 项目中定义一个本地存储库。 我有一个 super pom 和几个子模块。我的文件结构是: /root /repository /child po
我是一名优秀的程序员,十分优秀!