【问题标题】:how to create multiple jars with usage specific xml copied to jar - Maven如何使用复制到 jar 的特定于使用的 xml 创建多个 jar - Maven
【发布时间】:2018-08-14 23:31:51
【问题描述】:

我正在尝试从 ANT 构建迁移到 Maven 构建设置,以实现非常简单的代码库设置:

src > Java Classes

conf > META-INF > 3 xml files namely dbConnect-jboss.xml, dbConnect-weblogic.xml, dbConnect-ooc.xml

目标是创建 3 个 JAR: project-jboss.jar, project-weblogic.jar, project-ooc.jar

每个罐子都有META-INF/dbConnect.xml,相关conf/META-INF/dbConnect-xxx.xml的副本。

我尝试使用 [maven-jar-plugin + maven-antrun-plugin] 但问题是 maven-antrun-plugin 只复制一次所以假设先创建 project-jboss.jar 然后所有其余 jar有相同的 dbConnect.xxx.xml

我需要一种方法 - 如何每次通过 maven-antrun-plugin 调用 dbConnect.xml 文件的副本来创建相应的 JAR。

screenshot for maven-ant and maven-jar plugin section from pom.xml

【问题讨论】:

  • 嗨。您是否愿意在问题中添加 pom.xml 的内容而不是截图?它有助于复制内容并尝试更快地解决您的问题,而不是手动编写所有内容winky face
  • 我试过了——对 SoF 有点陌生——评论框提示我有很多代码,不允许我发帖
  • 只需在您的问题上单击edit 并将您的屏幕截图替换为 pom.xml 内容。

标签: java jar maven-plugin


【解决方案1】:

感谢所有在这里尝试帮助我的人,感谢您的帮助。 我选择了 maven-assembly-plugin 来满足需要。

以下 sn-p 将解释我的方法:

<pluginManagement>
        <plugins>
            <plugin>
                <!-- To suppress default JAR creation -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>default-jar</id>
                        <phase />
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <finalName>${project.artifactId}</finalName>
                    <useProjectArtifact>false</useProjectArtifact>
                    <archive>
                        <addMavenDescriptor>false</addMavenDescriptor>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>create-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>

然后,我为每个预期的相关 JAR 创建了相应的程序集 xml 文件。例如,程序集 xml 之一:

<assembly ....>
<id>jboss</id>
<formats>
    <format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
    <dependencySet>
        <!-- Avoid getting relevant dependencies included in JAR -->
        <includes>
            <include>com.vibrant:streamliner.reposerv</include>
        </includes>
        <useTransitiveDependencies>false</useTransitiveDependencies>
        <unpack>true</unpack>
        <unpackOptions>
            <excludes>
                <exclude>META-INF/**</exclude>
            </excludes>
        </unpackOptions>
    </dependencySet>
</dependencySets>
<files>
    <file>
        <source>${project.basedir}/config/META-INF/dbConnect-jboss.xml</source>
        <outputDirectory>META-INF</outputDirectory>
        <destName>dbConnect.xml</destName>
    </file>
</files>

然后,我在 pom.xml 中添加了配置文件:

<profile>
    <id>create-all-jars</id>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <descriptor>pom-assembly-jboss.xml</descriptor>
                        <descriptor>pom-assembly-weblogic.xml</descriptor>
                        <descriptor>pom-assembly-ooc.xml</descriptor>
                    </descriptors>
                    <appendAssemblyId>true</appendAssemblyId>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

而且,一旦我们执行以下操作 - 就会创建 3 个罐子:

mvn -P create-all-jars clean package

【讨论】:

    猜你喜欢
    • 2016-11-03
    • 2016-08-21
    • 2012-04-19
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2021-10-01
    相关资源
    最近更新 更多