我使用maven-jaxb2-plugin(org.jvnet.jaxb2.maven2)生成资源和xjb绑定,以便为生成的bean添加注释。
这些注释必须包含在插件的类路径中,所以我使用依赖项部分。
如果maven central build中缺少某些依赖项失败。 如何添加存储库以查找插件?
E.g。这个神器不能在maven中心找到
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>1.0.0.M2</version>
</dependency>
但可以在另一个存储库中找到:
<repository>
<id>spring-libs-milestone</id>
<name>Spring Milestone Repository</name>
<url>http://repo.spring.io/libs-milestone</url>
</repository>
插件配置:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.3</version>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>${spring.data.mongodb.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>1.0.0.M2</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<strict>true</strict>
<verbose>true</verbose>
<extension>true</extension>
<removeOldOutput>true</removeOldOutput>
<schemaDirectory>src/main/resources</schemaDirectory>
<bindingDirectory>src/main/resources</bindingDirectory>
<addCompileSourceRoot>true</addCompileSourceRoot>
<args>
<arg>-Xannotate</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.3</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.3</version>
</plugin>
</plugins>
</configuration>
</plugin>
构建示例: http://azee.people.yandex.net/job/elastic-template/6/console
答案 0 :(得分:3)
您需要定义pluginRepository
而非普通repository
。
插件及其所有依赖项仅从pluginRepositories
解析。这是为了分离代码并构建依赖关系。
添加:
<pluginRepositories>
<pluginRepository>
<id>spring-libs-milestone</id>
<name>Spring Milestone Repository</name>
<url>http://repo.spring.io/libs-milestone</url>
</pluginRepository>
</pluginRepositories>
答案 1 :(得分:0)
此处maven-jaxb2-plugin
以及jaxb2-basics
的作者。
我的建议是将您的依赖项plugin
添加到配置中,而不是添加到maven插件的dependency
。
请参阅此test project:
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<configuration>
<extension>true</extension>
<args>
<arg>-Xannotate</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-test-annox-annotations</artifactId>
</plugin>
</plugins>
</configuration>
</plugin>
</plugins>
我相信这比Maven插件的dependencies
要好。
首先,我认为在这种情况下,正常的repo将用于工件解析。
接下来,至少在Maven 2.x的时代,Maven只创建了每个maven插件的一个实例。因此,构建顺序中的第一个定义了插件的依赖项/类路径。在配置中提供依赖项工件不会出现此问题。