如何将jar依赖项添加到xtext maven构建中
在我的xtextdsl项目中使用maven jar文件的正确方法是什么 我尝试的是:如何将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两次时,构建才
- 使用
项目的*.dsl
文件中的将pom.xml
文件从maven存储库下载到.jar
目录中。这是在构建过程中尽早完成的:在maven中/lib/
- 在
中:将jar添加到类路径:例如MANIFEST.MF
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