簡體   English   中英

如何在非 Tycho 項目中使用 pomless tycho 工件

[英]How to use pomless tycho artifacts in non-tycho project

我有兩個項目:

  1. 一個 Eclipse 項目構建與 pomless Tycho 方法
  2. 一個普通的 Java 項目構建與普通的 Maven,沒有 OSGI,沒有 Tycho

我需要在第二個項目中使用來自第一個項目的一些捆綁包。 我嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM