maven-2 - 如何将 xmlbeans 自动生成的代码包含到 Maven jar 中?

标签 maven-2 xmlbeans

我有一个使用 Apache Xmlbeans 进行数据绑定(bind)的项目。目前它非常简单,只有 src/main/xsd 中的一些架构文件和 src/main/xsdconfig 中的 xsdconfig。

我想将生成的类包含到生成的 jar 文件中。如果我指定 xmlbeans 目标,它会起作用: "mvn xmlbeans:xmlbeans package"--> 使用 xmlbeans 类创建一个 Jar

但我想在正常的构建周期内执行此操作:“mvn package”--> 应该使用 xmlbeans 类创建一个 jar,但不会。

pom如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.test</groupId>
  <artifactId>xmlbeans-maven-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <build>
   <pluginManagement>
    <plugins>
     <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>maven-xmlbeans-plugin</artifactId>
          <version>2.3.3</version>
     </plugin>
    </plugins>
   </pluginManagement>
  </build>


  <dependencies>
    <dependency>
      <groupId>org.apache.xmlbeans</groupId>
      <artifactId>xmlbeans</artifactId>
      <version>2.4.0</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

我尝试将其手动绑定(bind)到“生成源”(以及“编译”阶段)阶段,但它不起作用。

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>de.leradon</groupId>
  <artifactId>xmlbeans-maven</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <build>
   <pluginManagement>
    <plugins>
     <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>maven-xmlbeans-plugin</artifactId>
          <version>2.3.3</version>
          <executions>
             <execution>
                <phase>generate-sources</phase>
                <goals>
                  <goal>xmlbeans</goal>
                </goals>
             </execution>
          </executions>
     </plugin>

    </plugins>
   </pluginManagement>
  </build>


  <dependencies>
    <dependency>
      <groupId>org.apache.xmlbeans</groupId>
      <artifactId>xmlbeans</artifactId>
      <version>2.4.0</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

如何配置插件,以便当我运行“mvn package”时,所有生成的类都打包到 jar 中?

您好, 勒拉德

最佳答案

如果您在pluginManagement配置插件,您仍然需要在plugins下声明它。为了简化起见,我没有在下面的 pom.xml 中使用 pluginManagement:

<project>
  ...
  <dependencies>
    ...
    <dependency>
      <groupId>org.apache.xmlbeans</groupId>
      <artifactId>xmlbeans</artifactId>
      <version>2.4.0</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>xmlbeans-maven-plugin</artifactId>
        <version>2.3.3</version>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <goals>
              <goal>xmlbeans</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

有了这个 POM(以及 src/main/xsd 中的一些 XSD,这是默认位置),运行 mvn clean package 就可以了(即,源代码是从XSD,作为构建的一部分进行编译和打包)。

关于maven-2 - 如何将 xmlbeans 自动生成的代码包含到 Maven jar 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3037472/

相关文章:

maven-2 - 是否可以拆分 maven pom 文件?

java - 如何使用所有必要的 jar 文件在 java 中逐行读取 .doc 文件?

java - 如何使用 xmlbeans 从另一个 xml 添加节点

java - 使用 Apache XML Bean 编码特殊字符

maven-2 - 从 2 个 war 项目中创建一个大型 war 文件

java - 将 MySQL 连接器 JAR 放在我的 WAR 的 WEB-INF/lib 中而不是在 $CATALINA_HOME/common/lib 中?

java - jetty-maven-plugin 不适用于 Maven 3

java - 如何覆盖 maven-compiler-plugin 的配置。 (构建目录,我想使用配置文件进行更改)

java - 如何 stub /模拟 XMLBeans 对象进行测试?

xml - 如何在 XQuery 上声明多个默认命名空间