代码之家  ›  专栏  ›  技术社区  ›  jrharshath

使用Maven对项目之间的XML依赖性建模

  •  1
  • jrharshath  · 技术社区  · 15 年前

    我正在构建一个由两个项目组成的应用程序: common theApp . 现在, 应用程序 取决于 常见的 (使用 dependency )我面临的棘手问题是:

    中有XML文件 common/src/main/env 这是需要的 应用程序 正在运行。

    为了让事情更有趣,跑步分布将具有以下结构:

    • bin/ -有脚本
    • lib/ -罐子是由 应用程序 常见的
    • dependencies/ -有应用程序所依赖的库jar吗?
    • config/ -XML文件来自 应用程序 常见的

    我已经完成了,除了我还在寻找一个方法来写一个马文进球 应用程序 可以放的球 常见的 的XML文件 配置/ .

    有什么想法吗?

    谢谢, 哈什

    1 回复  |  直到 15 年前
        1
  •  0
  •   Matt Gumbley    15 年前

    您将需要Maven程序集和依赖插件。在common/src/main/resources/assembles/config.xml中创建程序集描述符,如下所示:

    <assembly>
       <id>config</id>
       <formats>
          <format>zip</format>
       </formats>
       <fileSets>
          <fileSet>
             <directory>${basedir}/src/main/env</directory>
             <outputDirectory>/</outputDirectory>
          </fileSet>
       </fileSets>
       <dependencySets>
          <dependencySet>
             <useProjectArtifact>false</useProjectArtifact>
             <useTransitiveDependencies>true</useTransitiveDependencies>
             <outputDirectory>config/</outputDirectory>
          </dependencySet>
       </dependencySets>
    </assembly>
    

    然后在你的pom中使用它,比如:

    <build>
      <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
               <descriptorRefs>
                  <descriptorRef>config</descriptorRef>
               </descriptorRefs>
            </configuration>
            <executions>
               <execution>
                  <phase>package</phase>
                  <goals>
                     <goal>attached</goal>
                  </goals>
               </execution>
            </executions>
            <dependencies>
               <dependency>
                  <groupId>my.groupid</groupId>
                  <artifactId>common</artifactId>
                  <version>my.version</version>
               </dependency>
            </dependencies>
         </plugin>
      </plugins>
    </build>
    

    这将创建一个附加的工件common-config.zip,您可以使用app的pom.xml中的maven依赖插件扩展它,将文件放在app的target/config目录中(根据您创建最终分发的方式,这可能不合适):

     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>unpack-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>my.groupid</groupId>
                  <artifactId>common</artifactId>
                  <version>my.version</version>
                  <type>zip</type>
                  <overWrite>true</overWrite>
                  <includes>*</includes>
                  <outputDirectory>${project.build.directory}/config</outputDirectory>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
    

    其中一些记录在 http://www.sonatype.com/books/mvnref-book/reference/assemblies.html

    推荐文章