0

马云新手...

我使用 git clone 下载了 XSpec:

git clone https://github.com/xspec/xspec.git

我设置了适当的环境变量。XSpec 似乎工作正常。

对于 Maven 插件,我正在使用:xspec-maven-plugin-1

为了创建一个 Maven 项目,我打开了一个(Windows)命令窗口并输入:

mvn -B archetype:generate -DgroupId=org.test.waypoints -DartifactId=waypoints -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4

这创建了一个航点文件夹以及几个子文件夹。

我在这个文件夹中放了一个 XSpec 测试(waypoints.xspec):waypoints/src/test/xspec

我将我的 XSLT 程序 (waypoints.xsl) 放在这个文件夹中:waypoints/src/main/xsl

我打开了 waypoints/pom.xml 并将下面显示的插件元素添加到 build/pluginManagement/plugins 中。

https://github.com/xspec/xspec-maven-plugin-1上的文档说:不要忘记向您的 Saxon license 添加依赖项。问题 #1:如何向我的 Saxon 许可证添加依赖项?我的 Saxon 许可证位于此文件夹中:C:\SAXON\saxon-license

我不知道如何添加该依赖项,但尽管如此,我还是继续前进。我在包含 pom.xml 的文件夹中打开了一个命令窗口并输入:

mvn test

这似乎没有多大作用。我收到了这条消息:Nothing to compile - all classes are up to date

问题 #2:我应该在命令之前运行其他一些 Maventest命令吗?

问题 #3:Maven 如何知道使用 XSpec 代码?

问题#4:下面显示的插件元素看起来正确吗?

<plugin>
    <groupId>io.xspec.maven</groupId>
    <artifactId>xspec-maven-plugin</artifactId>
    <version>2.0.0</version>
    <dependencies>
        <dependency>
            <groupId>net.sf.saxon</groupId>
            <artifactId>saxon-ee</artifactId>
            <version>10.1</version>
        </dependency>
        <dependency>
            <groupId>io.xspec</groupId>
            <artifactId>xspec</artifactId>
            <version>1.6.0</version>
        </dependency>
    </dependencies>
    <configuration>
        <generateSurefireReport>true</generateSurefireReport>
        <saxonOptions></saxonOptions>
    </configuration>
    <executions>
        <execution>
            <phase>test</phase>
            <goals>
                <goal>run-xspec</goal>
            </goals>
        </execution>
    </executions>
</plugin>
4

1 回答 1

2

Q4 答案:

您的插件定义很好。如果低于/project/build/plugins,则无需添加任何内容。但是如果是 under /project/build/pluginManagement/plugins,插件只是被配置了,没有被声明。您必须在/project/build/plugins/.

<project ...>
  <build>
    <pluginManagement>
      <plugins>
        <!-- your code you put previously in this thread -->
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>io.xspec.maven</groupId>
        <artifactId>xspec-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

一旦插件被声明,因为它(通过execution元素)绑定到test阶段,当 mvn 运行这个测试阶段时,它会执行xspec-maven-plugin.

Q3 答案:

xspec-maven-plugin,在其默认配置中,知道 xspec 文件位于src/test/xspec. 它查找与*.xspec模式匹配的所有文件,并在每个文件上运行 xspec 套件。

xspec-maven-plugin,通过依赖机制,知道从哪里获取 XSpec 实现(您已经在插件依赖项中指定了 XSpec 版本),并且它将从 xspec 实现中获取 xspec 文件以在src/test/xspec.

Q2 答案:

mvn test没有就足够了。在运行之前xspec-maven-plugin,所有在阶段之前绑定到阶段的插件都会test被执行。有关更多信息,请参阅Maven 生命周期。如果您/project/packagingjar,则项目生命周期是上一个链接中描述的生命周期。

Q1 答案:

这取决于 !

  • 我将我的 Saxon 许可证文件包装在一个 jar 文件中,并将这个 jar 文件放在我的企业工件存储库中。所以,我有一个工件my.orga.saxon.license:ee:10.1可以添加到我的插件依赖项中,就像您为 xspec 实现所做的那样。这使我可以避免在所有使用 Saxon EE 的项目中复制许可证文件。如果您想这样做,请参阅Maven 安装插件Maven 部署插件
  • 您可以将许可证文件放在将添加到类路径的位置。src/main/java或者src/main/resources是这个的好地方。我没有测试它(前一个项目符号用于解释),但它应该可以工作。

更多的...

您收到的消息Nothing to compile...来自 Maven Lifecycle,其中有一个阶段,在其中编译compile找到的 java 类。src/main/java在接下来的阶段,将编译test-compile位于的 java 测试类。src/test/java可能,我应该xspec-compile在我的插件中定义一个目标,编译位于阶段的 xspecsrc/test/xspec文件test-compile。一切都在一个目标中完成。XSpec 文件分阶段执行test,其中执行 java 单元测试。

如果您需要一个带有 XSpec 单元测试的纯 XSL Maven 项目示例,您可以查看它使用的Matthieu Ricaud XML Utilites Projectxspec-maven-plugin ,但这里使用的是 Saxon-HE。

我没有使用 XSpec 和 Saxon-EE 的开源项目,对不起。

希望这有帮助。如果您需要更精确的信息,请随时通过私人邮件给我打电话,我会更新此线程。

克里斯托夫

于 2020-11-17T21:58:05.123 回答