【问题标题】:How to include automatically xmlbeans generated code into maven jar?如何将xmlbeans自动生成的代码包含到maven jar中?
【发布时间】:2011-03-03 12:31:55
【问题描述】:

我有一个使用 Apache Xmlbeans 进行数据绑定的项目。目前它非常简单,它只有 src/main/xsd 中的一些 Schema-Files 和 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>

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

<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中?

您好, 拉拉德

【问题讨论】:

    标签: maven-2 xmlbeans


    【解决方案1】:

    如果你配置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 生成,作为构建的一部分进行编译和打包)。

    【讨论】:

    • 我们有更新的方法吗?这个插件(它很旧)仍然有效,但由于没有进行新的开发,它可能会在未来中断
    • 我刚刚提交了the plugin。所以 XmlBeans 5.0.0 将集成该功能。
    【解决方案2】:

    试试这个。

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>xmlbeans-maven-plugin</artifactId>
        <version>2.3.2</version>
        <executions>
            <execution>
                <id />
                <phase>generate-sources</phase>
                <goals>
                    <goal>xmlbeans</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <schemaDirectory>src/main/xsd</schemaDirectory>
            <staleFile>${project.build.directory}/generated-sources/xmlbeans/.staleFlag</staleFile>
            <verbose>false</verbose>
            <quiet>false</quiet>
            <javaSource>1.6</javaSource>                    
        </configuration>
    </plugin>
    

    【讨论】:

    • 示例代码的答案应始终包括为什么该代码可以在原始海报没有的地方工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2017-08-23
    • 2021-07-31
    • 1970-01-01
    • 2013-07-07
    • 2016-11-08
    相关资源
    最近更新 更多