2012-08-29 70 views
4

在我的项目中,我有maven依赖项。
的方式是:如何在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>不起作用。

我希望我能够让问题清楚。
感谢您的帮助。

编辑:

<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> 

情况我试图解决可如果你的依赖创造新的Maven项目转载编辑2:

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

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

+0

使用pom的属性部分是最佳解决方案。为什么它不适合你? –

回答

4

好的,finnaly,经过几天的搜索和试验,我发现我的问题的解决方案。

如果您需要了解命令行行家提供的属性(谈论系统属性,这是从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> 

我希望这将是有所帮助的人。

同样对不起,我的笨拙的问题显然很难理解。

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> 

为什么不应该that work

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

+1

是的,你所描述的绝对有效。我试图说的是,当依赖我使用定义版本的IT与属性的依赖关系,但没有指定它的价值。 检查此pom - http://repository.muleforge.org/release/org/mule/modules/mule-module-activiti/3.2.0/mule-module-activiti-3.2.0.pom –

+0

不应该依赖关系集成测试与单元测试以及创建释放工件相同。 – khmarbaise

+0

是的,可能,但我不拥有这种依赖关系,我需要使用它。我试图避免每次需要构建项目时都必须在命令行上提供参数。 –

0

确保您没有用于与外界通话的代理设置。我只是尝试了你的配置,它工作。我正在使用最新的Maven 3版本。

+0

您是否设置了命令行参数?例如: 'mvn clean install -Dactiviti.version = 5.10',或者你运行它没有像''mvn clean install'这样的参数? –

+0

我在pom.xml中提供了像 3.2.0 的属性。你也可以尝试从命令行执行它,但它仍然工作 – Metalhead

+0

当你从命令行尝试时,你会得到wat错误吗? – Metalhead