【问题标题】:Delete, copy and modify a pom.xml file删除、复制和修改 pom.xml 文件
【发布时间】:2018-07-23 09:56:41
【问题描述】:

我的 pom.xml 文件包含三个不同的插件:第一个从 .xsd 生成 .java,第二个从文件夹更改 .java,第三个删除原始 .java

  ...
  <build>
        <plugins>
            <plugin>
                <groupId>org.jvnet.jaxb2.maven2</groupId>
                <artifactId>maven-jaxb2-plugin</artifactId>
                <version>0.12.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                     <execution>
                        <id>copy-resources</id>
                        <phase>validate</phase>
                        <goals>
                           <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                           <outputDirectory>${basedir}/src/main/java/pt/thales/attracktive/communication/pojo</outputDirectory>
                           <resources>          
                                <resource>
                                    <directory>${basedir}/target/generated-sources/xjc/uk/org/siri/siri</directory>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>*.java</include>
                                    </includes>
                                </resource>
                           </resources>              
                        </configuration>            
                    </execution>
                 </executions>
            </plugin>
            <plugin>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                  <filesets>
                    <fileset>
                      <directory>${basedir}/target/generated-sources/xjc/uk/org/siri/siri</directory>
                      <includes>
                        <include>**/*.java</include>
                      </includes>
                      <followSymlinks>false</followSymlinks>
                    </fileset>
                  </filesets>
                </configuration>
            </plugin>
        </plugins>
  </build>
</project>

问题:

  1. 我可以有一个删除插件和一个更改文件夹插件吗?根据我的测试,我不能,因为删除插件“更强”并且不要让更改文件夹插件起作用
  2. 当我更改文件夹时,包名称也会更改,是否可以更新它?
  3. 为什么这两个 .xsd 会出现此错误

订阅请求.xsd:

<?xml version="1.0" encoding="utf-8"?>
    <xs:schema xmlns:tns="http://www.siri.org.uk/siri" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.siri.org.uk/siri" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="RequestorRef" type="xs:string" />
      <xs:element name="MessageIdentifier" type="xs:string" />
      <xs:element name="ConsumerAddress" type="xs:string" />
      <xs:element name="SubscriberRef" type="xs:string" />
      <xs:element name="SubscriptionIdentifier" type="xs:unsignedByte" />
      <xs:element name="InitialTerminationTime" type="xs:dateTime" />
    </xs:schema>

和 TerminateSubscriptionRequest.xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://www.siri.org.uk/siri" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.siri.org.uk/siri" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="RequestTimestamp" type="xs:dateTime" />
  <xs:element name="RequestorRef" type="xs:string" />
  <xs:element name="SubscriberRef" type="xs:string" />
  <xs:element name="SubscriptionRef" type="xs:unsignedByte" />
</xs:schema>~

结果:

[错误] 解析架构时出错。位置 [ 文件:/C:/Users/rapha/Desktop/Thales/attracktive-master/thales.attracktive.communication/attracktive.communication/src/main/resources/TerminateSubscriptionRequest.xsd{4,54}]。 org.xml.sax.SAXParseException;系统标识: 文件:/C:/Users/rapha/Desktop/Thales/attracktive-master/thales.attracktive.communication/attracktive.communication/src/main/resources/TerminateSubscriptionRequest.xsd; 行号:4;列号:54; 'RequestorRef' 已定义

我尝试了不同的方法,但没有结果可能我错过了一些东西。 谢谢你的讲座,如果你能帮助我,请

【问题讨论】:

  • 你想通过复制和删除生成的java文件来达到什么目的?在我看来,您真正想要的是将文件生成到不同的包中,最好通过配置 jaxb 插件来完成。您得到的错误是因为两个模式文件定义了相同的命名空间并声明了相同的元素,因此出现了重复消息。
  • 这正是我想要的!如何选择不同的套餐?以及如何解决我的第三个问题,即重复消息?

标签: java xml maven xsd


【解决方案1】:

要更改包,您可以使用 jaxb2 插件的generatePackage 选项,如the plug-ins docs 中所述。 如果您需要更强大的功能(例如将不同的模式放在不同的包中),则需要使用 the jaxb docs 中所述的 jaxb2 绑定文件。

重复元素错误是由于您的两个文件都在同一命名空间中声明了 RequestorRef 元素。 您可以通过以下任一方式解决此问题:

  • 合并两个文件,这似乎是最好的选择,因为命名空间是相同的
  • 更改其中一个文件中的命名空间,以免它们发生冲突。如果重复的元素实际上是不同的元素,这将是有意义的

【讨论】:

    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2013-03-04
    相关资源
    最近更新 更多