繁体   English   中英

如何将自定义存储库添加到maven-jaxb2-plugin

[英]How to add custom repository to maven-jaxb2-plugin

我正在使用maven-jaxb2-plugin(org.jvnet.jaxb2.maven2)来生成资源和xjb绑定,以便为生成的bean添加注释。

这些注释必须包含在插件的类路径中,所以我使用依赖项部分。

如果maven central build中缺少某些依赖项失败。 如何添加存储库以查找插件?

例如,在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

源代码: https//github.com/azee/elastic-template/tree/nodeps

您需要定义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>

maven-jaxb2-plugin作者以及jaxb2-basics 我的建议是将依赖项作为plugin添加到配置中,而不是作为maven插件的dependency

看到这个测试项目

    <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插件的一个实例。 因此,构建顺序中的第一个定义了插件的依赖项/类路径。 在配置中提供依赖项工件没有此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM