努力让 xspec-maven-plugin-1 工作
Struggling to get the xspec-maven-plugin-1 to work
Maven 新手...
我使用 git 克隆下载了 XSpec:
git clone https://github.com/xspec/xspec.git
我设置了合适的环境变量。 XSpec 似乎工作正常。
对于 Maven 插件,我使用的是:xspec-maven-plugin-1
为了创建 Maven 项目,我打开了一个 (Windows) 命令 window 并输入:
mvn -B archetype:generate -DgroupId=org.test.waypoints -DartifactId=waypoints -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4
这创建了一个 waypoints 文件夹和几个子文件夹。
我将 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 许可证添加依赖项。问题 #1:如何向我的 Saxon 许可证添加依赖项?我的 Saxon 许可证位于此文件夹中:C:\SAXON\saxon-license
我不知道如何添加这种依赖性,但尽管如此,我还是坚持了下来。我在包含 pom.xml 的文件夹中打开命令 window 并输入:
mvn test
这似乎没什么用。我收到这条消息:Nothing to compile - all classes are up to date
问题 #2:在 test
命令之前,我是否应该 运行 一些其他 Maven 命令?
问题 #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>
Q4 答案:
你的插件定义很好。如果在 /project/build/plugins
下,则无需添加。但是如果在/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 运行s 这个测试阶段时,它执行 xspec-maven-plugin
.
Q3 答案:
xspec-maven-plugin
,在其默认配置中,知道 xspec 文件在 src/test/xspec
下。它会查找所有匹配 *.xspec
模式的文件,以及 运行 每个文件上的 xspec 套件。
xspec-maven-plugin
,通过一个依赖机制,知道从哪里得到 XSpec 实现(你在插件依赖中指定了 XSpec 版本),它会从 xspec 实现中获取 xspec 文件到 运行在 src/test/xspec
.
中找到的每个 xspec 文件上的 xspec 套件
Q2 答案:
没有。 mvn test
就够了。在 运行ning xspec-maven-plugin
之前,所有绑定到 test
阶段之前的阶段的插件都会被执行。有关详细信息,请参阅 Maven Lifecycle。如果您的 /project/packaging
是 jar
,那么项目生命周期就是前面 link 中描述的生命周期。
Q1 答案:
视情况而定!
- 我将我的 Saxon 许可证文件包装在一个 jar 文件中,并将这个 jar 文件放入我的企业工件存储库中。因此,我有一个工件
my.orga.saxon.license:ee:10.1
可以添加到我的插件依赖项中,就像您为 xspec 实现所做的那样。这使我能够避免在所有使用 Saxon EE 的项目中复制许可证文件。如果您想这样做,请参阅 Maven Install plugin or Maven deploy plugin
- 您可以将您的许可证文件放在一个可以添加到类路径的地方。
src/main/java
或 src/main/resources
是一个很好的地方。我没有测试它(上一个项目符号用于解释),但它应该可以工作。
更多...
你得到的消息,Nothing to compile...
来自 Maven Lifecycle,其中有一个 compile
阶段,其中 java 类 在 src/main/java
下找到编译。在接下来的阶段,编译位于src/test/java
中的test-compile
、java测试类。也许,我应该在我的插件中定义一个 xspec-compile
目标,以在 test-compile
阶段编译位于 src/test/xspec
的 xspec 文件。一切都在一个目标中完成。 XSpec 文件在 test
阶段执行,其中执行 java 单元测试。
如果您需要一个带有 XSpec 单元测试的纯 XSL Maven 项目示例,您可以查看 Matthieu Ricaud XML Utilites Project,它使用 xspec-maven-plugin
,但这里使用 Saxon-HE。
抱歉,我没有使用 XSpec 和 Saxon-EE 的开源项目。
希望对您有所帮助。如果您需要更精确的信息,请随时通过私人邮件给我打电话,我会更新此主题。
克里斯托夫
Maven 新手...
我使用 git 克隆下载了 XSpec:
git clone https://github.com/xspec/xspec.git
我设置了合适的环境变量。 XSpec 似乎工作正常。
对于 Maven 插件,我使用的是:xspec-maven-plugin-1
为了创建 Maven 项目,我打开了一个 (Windows) 命令 window 并输入:
mvn -B archetype:generate -DgroupId=org.test.waypoints -DartifactId=waypoints -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4
这创建了一个 waypoints 文件夹和几个子文件夹。
我将 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 许可证添加依赖项。问题 #1:如何向我的 Saxon 许可证添加依赖项?我的 Saxon 许可证位于此文件夹中:C:\SAXON\saxon-license
我不知道如何添加这种依赖性,但尽管如此,我还是坚持了下来。我在包含 pom.xml 的文件夹中打开命令 window 并输入:
mvn test
这似乎没什么用。我收到这条消息:Nothing to compile - all classes are up to date
问题 #2:在 test
命令之前,我是否应该 运行 一些其他 Maven 命令?
问题 #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>
Q4 答案:
你的插件定义很好。如果在 /project/build/plugins
下,则无需添加。但是如果在/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 运行s 这个测试阶段时,它执行 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
就够了。在 运行ning xspec-maven-plugin
之前,所有绑定到 test
阶段之前的阶段的插件都会被执行。有关详细信息,请参阅 Maven Lifecycle。如果您的 /project/packaging
是 jar
,那么项目生命周期就是前面 link 中描述的生命周期。
Q1 答案:
视情况而定!
- 我将我的 Saxon 许可证文件包装在一个 jar 文件中,并将这个 jar 文件放入我的企业工件存储库中。因此,我有一个工件
my.orga.saxon.license:ee:10.1
可以添加到我的插件依赖项中,就像您为 xspec 实现所做的那样。这使我能够避免在所有使用 Saxon EE 的项目中复制许可证文件。如果您想这样做,请参阅 Maven Install plugin or Maven deploy plugin - 您可以将您的许可证文件放在一个可以添加到类路径的地方。
src/main/java
或src/main/resources
是一个很好的地方。我没有测试它(上一个项目符号用于解释),但它应该可以工作。
更多...
你得到的消息,Nothing to compile...
来自 Maven Lifecycle,其中有一个 compile
阶段,其中 java 类 在 src/main/java
下找到编译。在接下来的阶段,编译位于src/test/java
中的test-compile
、java测试类。也许,我应该在我的插件中定义一个 xspec-compile
目标,以在 test-compile
阶段编译位于 src/test/xspec
的 xspec 文件。一切都在一个目标中完成。 XSpec 文件在 test
阶段执行,其中执行 java 单元测试。
如果您需要一个带有 XSpec 单元测试的纯 XSL Maven 项目示例,您可以查看 Matthieu Ricaud XML Utilites Project,它使用 xspec-maven-plugin
,但这里使用 Saxon-HE。
抱歉,我没有使用 XSpec 和 Saxon-EE 的开源项目。
希望对您有所帮助。如果您需要更精确的信息,请随时通过私人邮件给我打电话,我会更新此主题。
克里斯托夫