RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1052177
Accepted
skyho
skyho
Asked:2020-11-29 17:47:45 +0000 UTC2020-11-29 17:47:45 +0000 UTC 2020-11-29 17:47:45 +0000 UTC

Maven 构建期间出错(工件在外部目录中)

  • 772

旧项目正在转移到 maven,但我找不到tuprolog的库。

我从一个老项目里拿了一个库,不清楚是怎么创建的(不得不说,里面找到了eclipse,ide目录,总体来说,结构很奇怪,不像平时那样,好像这个项目已经大大被某人更改)。

我试图用maven连接一个类似的库

    <dependency>
            <groupId>it.unibo.alice.tuprolog</groupId>
            <artifactId>tuprolog</artifactId>
            <version>3.3.0</version>
        </dependency>

但它没有几个必要的类......

import alice.tuprolog.NullTerm;
import alice.tuprolog.SpyEvent;
import alice.tuprolog.SpyListener;

我不得不做这样的事情

        <dependency>
            <artifactId>alice.tuprolog</artifactId>
            <groupId>tuprolog</groupId>
            <scope>system</scope>
            <version>2P_1.0.0</version>
            <systemPath>${basedir}/lib/2P_1.0.0.jar</systemPath>
        </dependency>

编译时出现严重警告

在构建 com.its:common:jar:1.0-SNAPSHOT 的有效模型时遇到了一些问题 tuprolog:alice.tuprolog:jar 的“dependencies.dependency.systemPath”不应指向项目目录中的文件,${basedir} /lib/2P_1.0.0.jar 将无法被依赖项目解决@第 62 行第 25 列强烈建议修复这些问题,因为它们会威胁到构建的稳定性。出于这个原因,未来的 Maven 版本可能不再支持构建这种格式错误的项目。

更新

我创建了 pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>tuprolog</groupId>
    <artifactId>alice.tuprolog</artifactId>
    <version>2P_1.0.0</version>

  <name>prolog</name>
  <packaging>jar</packaging>

    <build>

    </build>
</project>

然后运行命令

mvn install:install-file -DpomFile=E:\!_svn\dec\common\lib\prolog\pom.xml –Dfile E:\!_svn\dec\common\lib\prolog\2P_1.0.0.jar r  -DgroupId=tuprolog -DartifactId=alice.tuprolog   -Dversion=2P_1.0.0   -Dpackaging=jar   -DgeneratePom=true

出错了

在当前项目和插件组 [org.apache.maven.plugins, org.codehaus.mojo] 中找不到前缀“E”的插件,可从存储库 [local (e:!_Insta ll!_apache-mvn-local -repo), 中央 ( https://repo1.maven.org/maven2/)] -> [帮助 1]

此命令同样的错误

mvn install:install-file –Dfile=2P_1.0.0.jar -DgroupId=tuprolog -DartifactId=alice.tuprolog -Dversion=2P_1.0.0

[错误] 无法在项目 alice.tuprolog 上执行目标 org.apache.maven.plugins:maven-install-plugin:2.4:install-file (default-cli):目标 org.apache.maven 的参数“文件”。plugins:maven-install-plugin:2.4:install-file is missing or invalid -> [Help 1] [ERROR]

添加引号

mvn install:install-file -DpomFile="E:\!_svn\declarant\common\lib\prolog\pom.xml" –Dfile="E:\!_svn\declarant\common\lib\prolog\2P_1.0.0.jar" r  -DgroupId=tuprolog -DartifactId=alice.tuprolog   -Dversion=2P_1.0.0   -Dpackaging=jar   -DgeneratePom=true

在当前项目和插件组 [org.apache.maven.plugins, org.codehaus.mojo] 中没有找到前缀 '?Dfile=E' 的插件,可从存储库 [local (e:\ !_Install!_apache- mvn-local-repo), 中央 ( https://repo1.maven.org/maven2/)] -> [帮助 1] [错误]

然后原来是错误在错误的字符中,所以这段代码执行没有错误

mvn install:install-file -DpomFile="E:/!_svn/declarant/common/lib/prolog/pom.xml" -Dfile="E:/!_svn/declarant/common/lib/prolog/2P_1.0.0.jar" -Dgro
upId=tuprolog -DartifactId=alice.tuprolog -Dversion=2P_1.0.0  -Dpackaging=jar -DgeneratePom=true

[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ alice.tuprolog --- [INFO] 安装 E:!_svn\dec\common\lib\prolog\2P_1.0.0。 jar 到 e:!_Install!_apache-mvn-local-repo\tuprolog\alice.tuprolog\2P_1.0.0\alice.tuprolog-2P_1.0.0.jar [INFO] 安装 E:!_svn\dec\common\lib\prolog \pom.xml 到 e:!_Install!_apache-mvn-local-repo\tuprolog\alice.tuprolog\2P_1.0.0\alice.tuprolog-2P_1.0.0.pom [INFO] ---------- -------------------------------------------------- ------------ [信息] 构建成功

但其实在指定位置有这个文件,只是项目中没有看到

Maven配置文件说

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">



  <localRepository>e:\!_Install\!_apache-mvn-local-repo\</localRepository>

事实上,这个多模块项目的所有主要工件都位于其他地方。

并且 prolog**.jar 被复制到maven配置文件中指定的位置

我正在使用Intellij IDEA 2019

请告诉我如何解决它..

决定

在maven配置文件中指定与 Intellij idea中相同的本地存储库路径。

此外,我决定在 maven 项目中创建一个存储库。

在项目中创建存储库

在需要工件的模块中,在 pom.xml 文件中,指定以下内容

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>dec</artifactId>
        <groupId>com.dec</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>com.its</groupId>
    <artifactId>common</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>common</name>
    <packaging>jar</packaging>

    <properties>
    </properties>

    <repositories>
        <repository>
            <id>repository</id>
            <releases>
                <enabled>true</enabled>
                <checksumPolicy>ignore</checksumPolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <url>file://${basedir}/lib/repository</url>
        </repository>
    </repositories>

/lib/repository - 此目录位于模块的根目录中。

然后命令(上面给出)再次在那里收集工件),只在命令中添加了一个参数

-DlocalRepositoryPath="E:/!_svn/dec/common/lib/repository"
java
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    default locale
    2020-11-29T18:23:37Z2020-11-29T18:23:37Z

    systemPath有点像用于系统依赖项。那些。在运行项目的机器上必须有一个可用的路径。您在源代码中有路径,这对 Maven 来说似乎很奇怪。

    “左”库的问题很常见。甚至问题是:如果库不在 maven 存储库中怎么办?

    通常人们将依赖项安装到机器上的本地存储库中:

    mvn install:install-file –Dfile=2P_1.0.0.jar -DgroupId=tuprolog -DartifactId=alice.tuprolog -Dversion=2P_1.0.0
    

    之后,它可以在没有的情况下连接systemPath:

    <dependency>
         <artifactId>alice.tuprolog</artifactId>
         <groupId>tuprolog</groupId>
         <version>2P_1.0.0</version>
    </dependency>
    

    缺点:任何构建项目的人都需要先安装库。

    更明智的选择:部署您自己的存储库(例如 Nexus)并将所有此类库存储在其中。然后公司中的所有人员都可以通过链接到存储库来构建项目。

    其他选项对我来说似乎更可疑。可以反编译库并将其作为子项目包含在 maven 中。还有一个选项可以在项目中声明存储库(Maven 通过 systemPath/system 添加 jar,但未添加到 war 或其他任何地方),但您需要将 JAR 与源代码一起分发。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5