如何使用maven在xml文件中编写?

时间:2016-08-19 13:39:57

标签: xml maven

我有一个案例,我必须在预定义的xml文件中编写一个项目依赖项的工件名称,它将与项目jar一起保存并驻留在项目的资源文件夹中。 例如 predefind.xml -

<project>
    <projectName>somename</projectName>
    <projectjar>
        <name>some.jar</name>
    </projectjar>
    <dependantJarsInfo>
        <folderName>dependant_jars</folderName>
        <dependantJars>
            <name>dependency.jar</name>
        </dependantJars>
    </dependantJarsInfo>    
</plugin> 

的pom.xml

<project>
    <groupId>com.mycom</groupId>
    <artifactId>someproject</artifactId>
    <packaging>jar</packaging>
    <version>5.8.0.0</version>

    <dependencies>

        <dependency>
            <groupId>com.mycom.</groupId>
            <artifactId>dependency</artifactId>
            <version>LATEST</version>
        </dependency>

    </dependencies>

</project>

我需要获取像dependency-1.2.0这样的全名,其中LATEST = 1.2.0,并在指定的标签处写入给定的predefined.xml文件。

        <dependantJars>
            <name>dependency.jar</name>
        </dependantJars>

如果是的话可以和maven一起使用,那怎么样?如果没有,那么我应该采取什么替代方案来解决这个问题。

2 个答案:

答案 0 :(得分:0)

我认为你实际上对你的问题采取了错误的方法。您应该尝试使用Maven Properties

示例

您可以在pom.xml中定义页面名称:

<project>

  <properties>
    <package.name>dependency.jar</package.name>
  </properties>

</project>

然后,当您想使用命令行更改包的名称时,可以使用以下命令覆盖它:

mvn -Dpackage.name=othername package ...

但是,如果您不覆盖软件包的名称,仍然可以使用pom.xml

中定义的默认值
mvn package ...

关于此的其他问题:

答案 1 :(得分:0)

在对这个问题进行研究后,我得到了解决方案。 我使用两个maven插件来解决它。

  1. maven-dependency-plugin
  2. gmaven-插件
  3. 使用此插件 -

     <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>build-classpath</id>
            <phase>validate</phase>
            <goals>
                <goal>build-classpath</goal>
            </goals>
            <configuration>
            <outputFile>target/classPath.txt</outputFile>
                <includeArtifactIds>
                    dependency
                </includeArtifactIds>
            </configuration>
        </execution>
    </executions>
    </plugin>   
    
    <plugin>
        <groupId>org.codehaus.groovy.maven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <executions>
            <execution>
                <id>groovy-magic</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>execute</goal>
                </goals>
                <configuration>
    
                    <source>
                        def theInfoName = "target/classPath.txt";
                        File theInfoFile = new File(theInfoName)
                        def words
                        def key
                        def value
                        if (!theInfoFile.exists()) {
                        println "File does not exist"
                        } else {
                        theInfoFile.eachLine { line ->
                        if (line.trim().size() == 0) {
                        return null
                        } else {
                        words = line
                        File theInfoFileto = new File(words)
                        ant.replace(file: "target/classes/myPackagepath/predefind.xml", token: "dependency.jar", value: theInfoFileto.getName())
                        }
                        }
    }                                
                    </source>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    希望这会对某人有所帮助。