如何将jar依赖项添加到xtext maven构建中

如何将jar依赖项添加到xtext maven构建中,maven,xtext,maven-dependency-plugin,Maven,Xtext,Maven Dependency Plugin,在我的xtextdsl项目中使用maven jar文件的正确方法是什么 我尝试的是: 使用*.dsl项目的pom.xml文件中的将.jar文件从maven存储库下载到/lib/目录中。这是在构建过程中尽早完成的:在maven中 在MANIFEST.MF中:将jar添加到类路径:例如Bundle类路径:,lib/value-2.5.6-annotations.jar 在build.properties:将其添加到bin.includes 问题是,只有当我调用mvn install两次时,构建才

在我的xtextdsl项目中使用maven jar文件的正确方法是什么

我尝试的是:

  • 使用
    *.dsl
    项目的
    pom.xml
    文件中的将
    .jar
    文件从maven存储库下载到
    /lib/
    目录中。这是在构建过程中尽早完成的:在maven中
  • MANIFEST.MF
    中:将jar添加到类路径:例如
    Bundle类路径:,lib/value-2.5.6-annotations.jar
  • build.properties
    :将其添加到
    bin.includes
问题是,只有当我调用
mvn install
两次时,构建才会起作用

第一次,
.jar
文件按预期下载到
lib
目录(在构建过程的早期),但是构建失败,因为它无法解析我的
jar文件中的类型

当我再次运行
mvn install
时(在构建之前,
.jar
文件现在已经存在于
lib
目录中),它工作正常

有什么办法解决这个问题吗?

简短回答 目前,它不能像预期的那样工作,因为

长话短说 以下是我在
xxx.dsl
项目中(目前)所做的工作:

pom.xml文件
  • 我使用将jar文件下载到
    lib
    目录中(尽可能早地在构建中)
  • 注意,我使用了
    stripVersion=true
    ,因此
    lib
    目录中的文件被称为
    value annotations.jar
    (而不是
    value-2.5.6-annotations.jar
    )。如果将来我想更新这个版本,我只需要在
    pom.xml
    文件中的一个地方更新它
  • jar文件还必须指定为依赖项,因为否则dsl插件的用户无法构建项目:即的
    generateXtext
    任务将失败,因为它无法在jar文件中找到类
  • 相关
    pom.xml
    code:

    <project ...>
        <properties>
            <xtextVersion>2.13.0</xtextVersion>
            <immutablesVersion>2.5.6</immutablesVersion>
            ...
        </properties> 
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.0.2</version>
                    <executions>
                        <execution>
                            <id>copy-libraries</id>
                            <phase>validate</phase>
                            <goals>
                                <goal>copy</goal>
                            </goals>
                            <configuration>
                                <artifactItems>
                                    <artifactItem>
                                        <groupId>org.immutables</groupId>
                                        <artifactId>value</artifactId>
                                        <version>${immutablesVersion}</version>
                                        <classifier>annotations</classifier>
                                        <outputDirectory>lib</outputDirectory>
                                    </artifactItem>
                                </artifactItems>
                                <stripVersion>true</stripVersion>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            ...
        </build>
        <dependencies>
            <dependency>
                <groupId>org.immutables</groupId>
                <artifactId>value</artifactId>
                <version>${immutablesVersion}</version>
                <classifier>annotations</classifier>
            </dependency>
        </dependencies>
    </project>  
    
    build.properties文件 将jar文件添加到
    bin.includes
    ,以便将其复制到生成的jar文件中(在
    target
    目录中):

    建造 现在,构建可以在Eclipse中运行

    命令行上(以及在我的持续集成服务器脚本中),我必须执行maven两次(由于提到的bug):

    • mvn验证
      (下载JAR)
    • mvn安装

    这是eclipse tycho的一个错误/问题,例如,@ChristianDietrich哇-这些错误已经存在5年多了!巴克明斯特仍然是一个构建选项吗?我在xtext书中读到过,但在当前的xtext版本中找不到任何内容。否。可能其中一个bug或链接的bug有解决方法。我目前在CI脚本中使用的一个简单解决方法是首先执行
    mvn verify
    (下载JAR),然后调用
    mvn install
    Bundle-ClassPath: ., lib/value-annotations.jar
    Export-Package: xxx.xtext,
     ...
     xxx.xtext.validation,
     org.immutables.value
    
    bin.includes=model/generated/,\
                   .,\
                   META-INF/,\
                   lib/value-annotations.jar,\
                   plugin.xml