繁体   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