[英]How to use pomless tycho artifacts in non-tycho project
我有两个项目:
我需要在第二个项目中使用来自第一个项目的一些捆绑包。 我尝试使用mvn clean install
将第一个项目中的 jar 文件安装到本地 maven 存储库中。 并试图从第二个项目中引用它们。 但我收到以下错误:
无法在项目上执行目标...:无法解析项目的依赖项...:无法在 bpms:bpms.util.jdk:jar:0.1.0-SNAPSHOT 处收集依赖项:无法读取 bpms:bpms 的工件描述符.util.jdk:jar:0.1.0-SNAPSHOT: Failure to find bpms:bundles:pom:1.0.0-SNAPSHOT in https://repo.maven.apache.org/maven2 was cached in the local repository, the resolution在中央的更新间隔过去或强制更新之前不会重新尝试 -> [帮助 1]
bpms.util.jdk-0.1.0-SNAPSHOT.pom
文件包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>bpms</groupId>
<artifactId>bundles</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>..\.polyglot.pom.tycho</relativePath>
</parent>
<artifactId>bpms.util.jdk</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<name>jdk utils</name>
</project>
看来问题是由父工件引起的。 是否可以在不参考父bundles
的情况下将我的工件安装为独立工件?
什么是正确的方法? 我不能使用 pomless Tycho,应该为每个捆绑包定义一个单独的 pom.xml?
似乎最简单的方法是使用mvn install:install-file
安装 jar 文件。 这是一个可能对某人有用的bat文件:
@echo off
set MVN_HOME=C:/Tools/apache-maven-3.6.3
set BPMS_HOME=C:/Work/workspace-bpms-trunk/bundles
for /f %%F in (deps.txt) do (
for /f "tokens=1,2 delims=: " %%G in (%BPMS_HOME%/%%F/META-INF/MANIFEST.MF) do (
if "%%G" == "Bundle-Version" (
call mvn install:install-file -DgroupId=bpms -DartifactId=%%F -Dversion=%%~nH-SNAPSHOT -DgeneratePom=true -Dpackaging=jar -Dfile="%BPMS_HOME%/%%F/target/%%F-%%~nH-SNAPSHOT.jar"
)
)
)
它从deps.txt
文件中读取包名称。 从META-INF/MANIFEST.MF
文件中读取捆绑版本并将 jars 安装到本地 maven 存储库中。 生成 pom 文件。
第二个脚本读取deps.txt
并生成pom.xml
的依赖项列表:
@echo off
set MVN_HOME=C:/Tools/apache-maven-3.6.3
set BPMS_HOME=C:/Work/workspace-bpms-trunk/bundles
break > deps-gen.txt
for /f %%F in (deps.txt) do (
for /f "tokens=1,2 delims=: " %%G in (%BPMS_HOME%/%%F/META-INF/MANIFEST.MF) do (
if "%%G" == "Bundle-Version" (
echo ^<dependency^>>> deps-gen.txt
echo ^<groupId^>bpms^</groupId^>>> deps-gen.txt
echo ^<artifactId^>%%F^</artifactId^>>> deps-gen.txt
echo ^<version^>%%~nH-SNAPSHOT^</version^>>> deps-gen.txt
echo ^</dependency^>>> deps-gen.txt
)
)
)
Linux 可以轻松实现类似的脚本。 groupId
可以在deps.txt
中指定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.