[英]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.