我有几个由maven构建的项目,我想在它们之间共享一些常见的属性 - spring版本,mysql驱动程序版本,svn base url等等 - 所以我可以更新它们一次,它将反映在所有项目中.
我想过有一个带有所有属性的超级pom,但如果我改变其中一个问题,我需要增加它的版本(并更新所有poms继承它)或从所有开发人员的机器中删除它我不想这样做.
可以在pom外部指定这些参数吗?我仍然希望在父pom中具有外部位置定义.
我来自ANT,您可以通过执行某种方法调用.java文件来获取版本号.我想在我的新pom.xml中做类似的事情来自动获取正确的版本号.我需要应用程序了解它自己的版本,同时Maven知道版本得到了正确的版本.持有版本infomormation加倍是没有选择.
或者Maven可以在构建期间/之前创建一个新的.java文件吗?
我可以想象很多方法来实现这个目标,但是在Maven项目中有没有最佳实践方法呢?
最新3.3声纳-maven-plugin和5.6 LTS作为网络服务器.
使用mvn sonar:sonar
(Scanner for Maven)运行声纳分析会
忽略sonar-project.properties文件.(有许多参数https://docs.sonarqube.org/display/SONAR/Analysis+Parameters)
这是预期的行为吗?
那么我是否必须在pom.xml文件中配置所有声纳参数?
我试图从文本文件中读取我的构建版本号,然后将其分配给生成的包名:myRelease-1.1.1.apk,其中内部版本号被手动设置为属性文件version.number = 1.1.1如何通过属性文件中的那个重载pom.xml中设置的$ {version.number}?
编辑:有关该项目的更多详细信息.我使用git提交属性文件,然后Jenkins接管并使用Maven构建.我想最终得到一个构建"myBuild-9.9.9.apk".现在我在extras/version.properties中有"myBuild-1.1.2.apk"
project.version=9.9.9
Run Code Online (Sandbox Code Playgroud)
在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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
.....
<version>1.1.2</version>
</parent>
<groupId>ca.lapresse.android</groupId>
<artifactId>lapresse-hockey-app</artifactId>
<packaging>apk</packaging>
<name>La Presse Hockey - App</name>
<version>1.1.2</version>
Run Code Online (Sandbox Code Playgroud)
......似乎${project.artifactId}从版本号开始<version></version>,它变成了1.1.2.这应该反映在${project.version},我试图从属性文件重载.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${project.basedir}/extras/version.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我做错了什么,我根本没做什么?我对Maven的理解非常简陋(我来自Ant背景).
我想在我的pom中将属性设置为包含所有项目依赖项的类路径.蚂蚁插件做了这样的事情,所以我知道这绝对是可能的.
我基本上想在我的pom中使用$ {maven.compile.classpath},并让它"正常工作".我不介意使用插件或其他任何东西来实现这一点.
非常感谢,
缺口
是否可以读取文件并将整个内容存储到Maven属性中?
我正在尝试生成一些自定义JavaDoc,并且他们可以选择设置标头,但它必须是字符串,而不是文件名(出于某种原因).我显然不想把一堆HTML放到我的pom.xml中,所以我需要一种方法来读取我header.html的Maven属性.
这可能吗?我无法找到标准方式,但看起来像Maven插件可能会这样做.
显然Ant有我想要的东西,但我更喜欢比Ant任务更重的东西.
我已经看到很多关于maven.multiModuleProjectDirectory在SO和Maven邮件列表上设置env参数的讨论,但是我无法准确理解这个设置的用途.
我搜索了谷歌,专家网站,文档等,但似乎找不到实际解释这个参数是什么,或如何利用它的参考.
任何人都可以解释它的目的和/或指向我的文档吗?它引入了哪个版本的maven?
我们同时开发项目的多个分支.每个开发人员都有多个工作副本,每个工作副本使用自己的数据库模式.(通常会有每个分支工作拷贝,但有时甚至超过一个工作日每个分支副本.)我们需要让Maven的了解DB凭据(数据库迁移插件,单元测试,为的dev的实例小服务程序).
我们无法将凭据放入,pom.xml因为每个开发人员可能使用不同的数据库模式名称.我们无法放入凭据,settings.xml因为每个开发人员都使用多个架构.
我们把凭证放在哪里?
例如,http://code.google.com/p/c5-db-migration/描述了需要存在数据库凭据,pom.xml但我想将它们外部化为不受版本控制的文件.
我有一个如下所示的属性文件
testdb.username=AA
testdb.password=AA
testdb.port=1521
testdb.host=localhost
Run Code Online (Sandbox Code Playgroud)
现在,我想在 maven 命令中将所有这 4 个键值对作为 env 变量传递。
一种方法是将每个键值对放在如下所示的 maven 命令中
mvn clean package -Dtestdb.username=A -Dtestdb.password=AA ....
Run Code Online (Sandbox Code Playgroud)
我想知道在 Maven 中有什么方法可以将整个属性文件传递给 Maven 和 Maven 读取属性文件,并将所有键值对动态设置为 Maven 命令中的 env 变量。
由于我的构建系统的设计方式(RTC 构建引擎),我想通过属性文件为 maven 提供属性值,而不是为每个属性指定 -Dkey=value。
我发现了几个关于 SO 的问题(How to set build properties from a file in Maven POM? and How to read an external properties file in Maven)与这个问题完全相关,但它们相对较旧,并且都需要自定义插件工作(处于 alpha 状态)。
我意识到像这样将参数传递给 Maven 可能不是最好的解决方案,但另一个选项是通过 -D 设置在命令行上指定所有内容,这也不理想。
此外,鉴于此属性文件仅由构建引擎(而不是个人开发人员)真正使用,我并不真正相信它属于 pom.xml 文件。但是我找不到任何其他机制可以让我指定要使用的插件 - settings.xml 不允许指定插件。
在这种情况下,我唯一的选择是使用插件并在项目 pom 中指定它吗?
我有一个与maven属性插件相关的问题.我的问题与如何在Maven中读取外部属性文件有些关系
根据该文章的建议,我已经设法让它完成我想要它做的大部分工作.我的配置如下所示:
<dependency>
<groupId>org.kuali.maven.plugins</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.8</version>
</dependency>
...
<plugin>
<groupId>org.kuali.maven.plugins</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.8</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${basedir}/${environment}.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
现在,我遇到的问题如下:我已经配置了一个简单的存储库来存储内容,如下所示:
<distributionManagement>
<repository>
<id>localRep</id>
<url>file:${localRepositoryLocation}</url>
</repository>
</distributionManagement>
Run Code Online (Sandbox Code Playgroud)
运行时mvn deploy,$ {localRepositoryLocation}不会被替换.
[INFO] --- maven-deploy-plugin:2.5:deploy (default-deploy) @ SomeApp ---
Uploading: file:${localRepositoryLocation}/SomeApp/SomeApp/1.0.0/SomeApp-1.0.0.war
Uploaded: file:${localRepositoryLocation}/SomeApp/SomeApp/1.0.0/SomeApp-1.0.0.war (5754 KB at 18322.3 KB/sec)
Uploading: file:${localRepositoryLocation}/SomeApp/SomeApp/1.0.0/SomeApp-1.0.0.pom
Uploaded: file:${localRepositoryLocation}/SomeApp/SomeApp/1.0.0/SomeApp-1.0.0.pom (7 KB at 2051.1 KB/sec)
Run Code Online (Sandbox Code Playgroud)
另外,我应该注意到我也在mojo版本中使用了该插件,它产生了完全相同的行为.因此,如果来自两个不同提供商的相同插件具有相同的结果,那么我必须在这里做错事.
有人能帮忙吗?
亲切的问候,安德烈