5

在我的项目中,我有 Maven 依赖项。
顺便说一句:

<dependency>
   <groupId>org.mule.modules</groupId>
   <artifactId>mule-module-activiti</artifactId>
   <version>3.2.0</version>
</dependency>

在此依赖项 POM 中有一个已使用但未定义的属性 -${activiti.version}

我发现如何设置此属性的唯一方法是在命令行上指定它,例如mvn -Dactiviti.version=5.10

有什么方法可以在我的项目的 POM 中指定这个属性吗?
<properties><activiti.version>5.10</activiti.version></properties>不起作用。

编辑:

如果您创建具有依赖关系的新 maven 项目,我试图解决的情况可以重现:

<dependency>
   <groupId>org.mule.modules</groupId>
   <artifactId>mule-module-activiti</artifactId>
   <version>3.2.0</version>
</dependency>

并提供所需的存储库:

  <repositories>
        <repository>
            <id>muleforge-repo</id>
            <name>MuleForge Repository</name>
            <url>http://repository.muleforge.org/release</url>
            <layout>default</layout>
        </repository>

        <repository>
            <id>codehaus-repo</id>
            <name>Codehaus Repository</name>
            <url>http://dist.codehaus.org/mule/dependencies/maven2</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>activiti</id>
            <name>Activiti</name>
            <url>https://maven.alfresco.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>

编辑2:

这是org.mule.modules:mule-module-activiti:3.2.0的POM,我的项目所依赖的库。在这个 pom 内部,他们使用 expression 。但是他们没有为这个表达式设置值。(没有什么像)${activiti.version}<properties><activiti.version>5.10</activiti.version></properties>

问题是如何从我的pom 中为这个表达式设置一个值?

4

3 回答 3

7

好的,最后,经过几天的搜索和试验,我找到了解决问题的方法。

如果您需要在命令行上为 maven 提供属性(谈论系统属性,这与maven 属性略有不同),您还可以使用插件在您的 pom 或单独的属性文件中提供这些属性。

注意: 系统属性可用于覆盖依赖项中的 Maven 属性。

像这样:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-2</version>
    <executions>
        <execution>
            <goals>
                <goal>set-system-properties</goal>
            </goals>
            <configuration>
                <properties>
                    <property>
                        <name>activiti.version</name>
                        <value>5.10</value>
                    </property>
                </properties>
            </configuration>
        </execution>
    </executions>
</plugin>

我希望它会对某人有所帮助。

也为我显然难以理解的笨拙问题感到抱歉。

于 2012-08-30T11:21:08.000 回答
4

您可以使用属性来定义版本:

<properties>
  <module-version>3.2.0</module-version>
</properties>
..
<dependency>
   <groupId>org.mule.modules</groupId>
   <artifactId>mule-module-activiti</artifactId>
   <version>${module-version}</version>
</dependency>

为什么不应该这样工作

您永远不应该通过命令行上的属性定义工件的版本,因为您将来无法重现它,我怀疑它是否有效。

于 2012-08-29T10:01:25.290 回答
0

确保您没有与外界交谈的代理设置。我刚刚尝试了您的配置,并且成功了。我正在使用最新的 Maven 3 版本。

于 2012-08-29T12:39:37.223 回答