Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven:property标记中pom.xml中的If语句_Xml_Maven_If Statement_Pom.xml_Sentence - Fatal编程技术网

Maven:property标记中pom.xml中的If语句

Maven:property标记中pom.xml中的If语句,xml,maven,if-statement,pom.xml,sentence,Xml,Maven,If Statement,Pom.xml,Sentence,如果设置了环境变量,我想设置一个属性。我在谷歌上搜索了很多,发现的都是类似于下面代码的东西,但我不断发现错误: [FATAL]不可解析的POM Y:\Maven\parent POM\POM.xml:文本后面必须紧跟END_标记,而不是START_标记(位置:START_标记 甚至…不动产“\r\n classpathref=“maven.plugin.classpath”/>…@29:55)@第29行,第29列 55 这就是我正在尝试的代码,它在pom.xml中,我运行了这个命令- mvn—部

如果设置了环境变量,我想设置一个属性。我在谷歌上搜索了很多,发现的都是类似于下面代码的东西,但我不断发现错误:

[FATAL]不可解析的POM Y:\Maven\parent POM\POM.xml:文本后面必须紧跟END_标记,而不是START_标记(位置:START_标记 甚至…不动产“\r\n
classpathref=“maven.plugin.classpath”/>…@29:55)@第29行,第29列 55

这就是我正在尝试的代码,它在pom.xml中,我运行了这个命令-

mvn—部署错误

当然,如果您对如何根据环境变量content在pom.xml中设置属性有其他建议,我很乐意得到任何其他解决方案

谢谢, 伊莱


.....
${env.WAS60_HOME}
${was60.home}/java/bin/javac
${env.WAS85_HOME}
${was85.home}/java/bin/javac
was.base.v60
....
${was60.home}/java/jre/lib/xml.jar
.....
was.base.v85
....
${was85.home}/java/jre/lib/xml.jar
.....

属性标签内任务的使用已连接,请改用maven antrun插件。您可以使用


maven antrun插件
1.3
ftp
包裹
跑
真的
抗辩人
抗辩人
20020829

更好的方法是使用

这种方法很容易在Jenkins中维护,使用它可以使用GUI编辑我为每个项目使用的各种设置文件

更新2: 以下是我如何设置构建的示例。POM包含一个带有默认属性值的部分。我设置了一个或多个pfiles以覆盖这些值:

<project>
  <properties>
     <my.property1>hello</my.property1>
     <my.property2>world</my.property2>
     ..
  </properties>
  ..

  <build>
    <profiles>
      <profile>
        <id>build_in_spanish</id>
        <properties>
          <my.property1>hola</my.property1>
          <my.property2>mundo</my.property2>
          ..
        </properties>
      </profile>
      <profile>
        <id>build_in_irish</id>
        <properties>
          <my.property1>dia dhuit</my.property1>
          <my.property2>an domhain</my.property2>
          ..
        </properties>
      </profile>
    <profiles>
  </build>
</project>
注:

  • 配置文件可以在POM中,也可以在单独的设置文件中。后一种方法提供了最大的灵活性
  • 可以显式启用配置文件(使用“-P”命令行选项,或尝试发现它所在的环境。这是一种设计选择)

显然,在Maven中没有合适的IF-THEN-ELSE语句,至少我没有找到

我发现最近的一件事是使用“激活”标签。如果满足其中的条件,它将激活配置文件

Maven 2.0.X中有一些关于多个条件的bug,不确定它现在的状态如何-

因此,这里回答了一个关于这个问题的代码示例-

但是,如果你想做类似>的事情,你会用头撞在墙上。当然,还有其他方法,我认为这是有目的的,所以你必须遵循Maven的方法

多亏了你的帮助
Elyahu

尝试将\>替换为行中的/>

<equals arg1="${env.WAS60_HOME}" arg2=""\>


为什么在使用${env.WAS####u HOME}时我需要“激活”直接。另一个问题,如果ENV变量未设置或为空,那该怎么办?@Elyahu完全取决于你。我更新了我的答案,详细介绍了如何使用配置文件。嗨,Mark,那么你如何处理变量未设置或未设置的情况空的?你能给我举个例子吗?我在你发送的链接中找不到它。这是Maven的一个大问题:你必须用Maven的方式做事,这总是很不直观,以至于在两个小时的努力寻找和应用相关文档后,我放弃了。
<profiles>
  <profile>
    <id>was.base.v60</id>
    <activation>
      <property>
        <name>env.WAS60_HOME</name>
      </property>
    </activation>
    <dependencies>
      <dependency>
        ....     
        <systemPath>${env.WAS60_HOME}/java/jre/lib/xml.jar</systemPath>
      </dependency>
      .....    
    </dependencies>
  </profile>
  <profile>
    <id>was.base.v85</id>
    <activation>
      <property>
        <name>env.WAS85_HOME</name>
      </property>
    </activation>
    <dependencies>
      <dependency>
        ....     
        <systemPath>${env.WAS85_HOME}/java/jre/lib/xml.jar</systemPath>
      </dependency>
      .....    
    </dependencies>
  </profile>
</profiles>
mvn -s $PROJECT_SETTINGS -P myProfile ....
<project>
  <properties>
     <my.property1>hello</my.property1>
     <my.property2>world</my.property2>
     ..
  </properties>
  ..

  <build>
    <profiles>
      <profile>
        <id>build_in_spanish</id>
        <properties>
          <my.property1>hola</my.property1>
          <my.property2>mundo</my.property2>
          ..
        </properties>
      </profile>
      <profile>
        <id>build_in_irish</id>
        <properties>
          <my.property1>dia dhuit</my.property1>
          <my.property2>an domhain</my.property2>
          ..
        </properties>
      </profile>
    <profiles>
  </build>
</project>
mvn -P build_in_spanish ...
<equals arg1="${env.WAS60_HOME}" arg2=""\>