java - 使用 JAXB 和 xjc maven 插件生成 Java 类
问题描述
我是 XJC Maven 插件的新手。我正在尝试从 XSD 生成一个 Java 类。我已将 XSD 文件放在 src/main/resources/static/xsd 位置(假设我的文件名是 example.xsd)。我还创建了一个包 src/main/java/com/example/message,我希望在其中找到我生成的 Java 类的来源。我的 pom 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>1</version>
<packaging>war</packaging>
<name>demo</name>
<description>demo</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
<relativePath />
<!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.7</java.version>
</properties>
<repositories>
<repository>
<id>jboss</id>
<name>JBoss Repository</name>
<url>https://repository.jboss.org/nexus/content/repositories/releases</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>java.net</id>
<name>Java.net Repository</name>
<url>http://download.java.net/maven/2/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>codelds</id>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<artifactId>tomcat-embed-el</artifactId>
<groupId>org.apache.tomcat.embed</groupId>
</exclusion>
<exclusion>
<artifactId>tomcat-embed-websocket</artifactId>
<groupId>org.apache.tomcat.embed</groupId>
</exclusion>
<exclusion>
<artifactId>tomcat-embed-core</artifactId>
<groupId>org.apache.tomcat.embed</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>demo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<packageName>com.example.message</packageName>
<sources>
<source>src/main/resources/static/xsd/example.xsd</source>
</sources>
</configuration>
</plugin>
</plugins>
</build>
</project>
但是当我构建项目时,com.example.message 中没有生成任何文件。谁能建议我做错了什么?
解决方案
如果您不指定目标文件夹,您生成的类将放置在/target/generated-sources/jaxb
. 我不会将这些类放在以下任何文件夹或包中src/main/java
:我认为每次使用 Maven 启动构建时都应该删除并重新创建生成的文件。通过这种方式,您可以确保始终拥有正确生成的文件。
如果您使用 IntelliJ,您应该能够使用类,如果您是 Eclipse 用户,那么您必须将它们添加到源文件夹(右键单击文件夹 -> 构建路径 -> 用作源文件夹)。
在生成 jar/war 文件时,您无需指定任何内容来包含这些类,Maven 会自动包含它们。
推荐阅读
- javascript - 如果链接到数组(javascript),函数如何仅使用一个括号工作
- php - 跨域 CSRF 令牌检查失败
- javascript - 自动完成功能无法正常工作
- cmake - 为 CMake 项目创建配置文件
- java - 根据全局布尔值运行一组测试
- sql - 如何合并来自同一个表的两个分组查询?
- bash - bash 脚本的 if 和 else 语句
- database - Weblogic 控制台上的应用程序 STOP/START 上的 ADF Web 应用程序数据库连接问题
- javascript - Fetch API 中的请求信号属性
- excel - 使用 R1C1 符号和动态工作表参考编码 SUMIF 的难度