在我的xtext dsl项目中使用maven jar文件的正确方法是什么?
我试过的是:
pom.xml
项目的*.dsl
文件中的maven-dependency-plugin将.jar
文件从maven存储库下载到./lib/
目录中。这在构建过程中尽早完成:在maven validate phase MANIFEST.MF
:将jar添加到类路径中:例如Bundle-ClassPath: ., lib/value-2.5.6-annotations.jar
build.properties
中:将其添加到bin.includes
问题是,只有当我两次调用mvn install
时,构建才有效。
第一次,.jar
文件按预期(在构建过程的早期)下载到lib
目录,但是构建失败,因为它无法解析{{1}中的类型}}。
当我再次运行jar file
时(mvn install
文件现在已经存在于构建之前的.jar
目录中),它可以正常工作。
有任何想法如何解决这个问题?
答案 0 :(得分:0)
由于Tycho
中存在错误,目前无法按预期工作以下是我在lib
项目中所做的工作(现在):
stripVersion=true
目录。 lib
,因此value-annotations.jar
目录中的文件称为value-2.5.6-annotations.jar
(而不是pom.xml
)。如果我以后想要更新版本,我只需要在generateXtext
文件中的一个位置更新它。pom.xml
任务将失败,因为它无法找到类在jar文件中。相关的<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>
代码:
Bundle-ClassPath
DslJvmModelInferrer.xtend
,以便我们可以使用它:例如在Export-Package
xxx.dsl.tests
,以便MANIFEST.MF
项目 Bundle-ClassPath: ., lib/value-annotations.jar
Export-Package: xxx.xtext,
...
xxx.xtext.validation,
org.immutables.value
的相关部分:
bin.includes
将jar文件添加到target
,以便将其复制到生成的jar文件(在bin.includes=model/generated/,\
.,\
META-INF/,\
lib/value-annotations.jar,\
plugin.xml
目录中):
mvn verify
现在构建工作在 Eclipse 。
在命令行(以及我的持续集成服务器脚本中),我必须执行两次maven(因为提到的错误):
mvn install
(下载广告罐)url1 <- "http://atla.avatarspirit.net/transcripts.php?num=120"
webpage <- read_html(url1)
webpage %>%
html_nodes("b") %>%
html_text()