标签: build-dependencies

Gradle无法使用版本RELEASE找到Maven父依赖项

我有一个带有pom.xml的"项目B",如下所示:

<parent>
    <groupId>org.company</groupId>
    <artifactId>projectA</artifactId>
    <version>RELEASE</version>
</parent>

<artifactId>projectB</artifactId>
<version>0.0.1</version>
Run Code Online (Sandbox Code Playgroud)

其中"项目B"将"项目A"作为父项目pom.

我正在尝试使用gradle创建一个新的"项目C",如果我想使用"项目B"作为依赖项,我指定build.gradle如下:

repositories {
    maven {
         url "http://mycompany:8081/artifactory/repository"
    }
}

dependencies {
    compile group: 'org.company', name: 'projectB', version: '0.0.1'
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

无法解析org.company:projectB:0.0.1.

无法解析POM http:// company:8081/artifactory/repository/org/company/projectB/0.0.1/projectB-0.0.1.pom

找不到org.company:projectA:RELEASE.

从设置我的projectA版本号到特定的版本号,有没有办法让这个版本与gradle一起工作?

有没有办法让gradle找到像maven正在做的正确版本?我的其他maven项目找到正确的版本没有问题.

我不想得到项目A的最新版本,也许下载完整的项目B jar就足够了.

PD我在本地计算机上使用gradle版本4.5和maven版本3.5.2

gradle maven build-dependencies

11
推荐指数
1
解决办法
582
查看次数

将Gradle与本机依赖项一起使用

我想在Gradle项目中使用Sigar.默认情况下,Sigar分发提供了两种类型的文件:

  • 包含类的JAR
  • 一些本机文件(.so,dylib,.dll)

我的目的是重新打包这些文件,以便我可以将它们用作从个人Maven存储库按需部署和下载的依赖项.

我的第一次尝试是将依赖项定义为文件,以便在重新打包之前检查我的应用程序是否按预期工作.下面是我用于第一次测试的Gradle代码:

dependencies {
  compile files("${rootDir}/lib/sigar/sigar.jar")
  runtime fileTree(dir: "${rootDir}/lib/sigar/", exclude: "*.jar")
}
Run Code Online (Sandbox Code Playgroud)

然后,我将Sigar本机文件重新打包到JAR中并重命名另一个以匹配maven工件的规则,因为我想将它们部署在Maven存储库中.以下是我得到的:

  • sigar-1.6.4.jar(包含.class文件)
  • sigar-1.6.4-native.jar(在根目录下包含.dylib,.so和.dll文件)

下一步是在我的自定义存储库中部署这些文件.然后,我更新了我build.gradle的内容如下:

dependencies {
  compile 'sigar:sigar:1.6.4'
  runtime 'sigar:sigar:1.6.4:native'
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我这样做时gradle clean build,会获取新的依赖项,但在运行时无法再找到本机库,因为现在我得到以下异常:

Error thrown in postRegister method: rethrowing <java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Sigar.getCpuInfoList()[Lorg/hyperic/sigar/CpuInfo;>
Run Code Online (Sandbox Code Playgroud)

因此,我正在寻找一种解决方案来获取和链接本机文件到我的Java应用程序,就像其他依赖项一样.欢迎任何建议,评论,建议,帮助,解决方案等;)

java gradle build-dependencies build.gradle

9
推荐指数
1
解决办法
7980
查看次数

将文件夹下的所有文件添加到CMake glob?

我刚看过这个:

CMake - 自动将文件夹中的所有文件添加到目标?

答案表明文件为glob,例如:

file(GLOB "*.h" "*.cpp")
Run Code Online (Sandbox Code Playgroud)

现在,如果我希望我的目标依赖于特定文件夹下某种类型的所有文件 - 可能在多个子文件夹中,该怎么办?我试过用

execute_process(COMMAND find src/baz/ -name "*.cpp" OUTPUT_VARIABLE BAR)
Run Code Online (Sandbox Code Playgroud)

然后

add_executable(foo ${BAR}
Run Code Online (Sandbox Code Playgroud)

但这给了我错误:

找不到源文件:

  src/baz/some/file/here

src/baz/some/other_file/here

src/baz/some/other_file/here2
Run Code Online (Sandbox Code Playgroud)

(是的,有那个间距.)

我在这做错了什么?

glob cmake build-dependencies

9
推荐指数
1
解决办法
2万
查看次数

CMake 拒绝第二个 target_link_libraries 谈论“关键字”与“普通”

我正在编译一个二进制文件,target_link_libraries()出于各种原因,我想在两个不同的命令中添加它的依赖库。

我的命令如下所示:

target_link_libraries(my_prog PRIVATE foo bar)
target_link_libraries(my_prog baz)
Run Code Online (Sandbox Code Playgroud)

我得到错误:

  The keyword signature for target_link_libraries has already been used with
  the target "my_prog".  All uses of target_link_libraries with a target
  must be either all-keyword or all-plain.

  The uses of the keyword signature are here:

   * tests/CMakeLists.txt:10 (target_link_libraries)
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我该怎么办?

cmake build-dependencies

9
推荐指数
1
解决办法
7504
查看次数

我可以在Mercurial中嵌套subrepos吗?

我在使用subrepos在Mercurial中设置项目时遇到问题.

目标:

我想像这样设置结构:

-- Build_Repo (this repo will be used to track dependencies)
  -- Subrepo_A (this is the main source)
    -- Modules (Part of Subrepo_A)
      -- Subrepo_B 
Run Code Online (Sandbox Code Playgroud)

所以有三个存储库:Build,A和B.B嵌套在A中,A嵌套在根构建存储库中.构建仓库将用于跟踪依赖关系,subrepo A将用于跟踪主要源文件,subrepo B(和其他)将用于跟踪模块/插件开发.

问题/疑问

通过简单地将Subrepo_A路径和源添加到.hgsub文件并将其提交到构建仓库,我可以设置初始构建仓库和嵌套Subrepo_A.但是,当我将subrepo_B路径/源添加到构建存储库的.hgsub之后,然后尝试提交我收到错误消息:

abort:path'Subrepo_A/Modules/Sebrepo_B'在嵌套repo'Subrepo_A'中

Mercurial似乎不喜欢已嵌套的repo中的嵌套repo.这是真的吗,还是我错过了什么?关于如何管理构建/依赖关系的任何更好的想法?

version-control mercurial dependencies build-dependencies mercurial-subrepos

8
推荐指数
1
解决办法
756
查看次数

Xcode如何添加外部项目

我需要在我的Xcode项目中添加一个外部项目,原因是我需要在外部项目静态库上添加一个Target Dependency.

我似乎无法以我需要的方式添加它,我希望它像这样:

在此输入图像描述

但是,当我将另一个项目添加到我的实际Xcode项目时,我得到以下内容,这不允许我从我的项目中探索该项目,因此我无法添加我需要的依赖项.

在此输入图像描述

请注意,这些屏幕截图来自两个不同的项目,并且在显示我想在我自己的项目中重现的内容中,拖动多个项目按预期工作.

也许我在项目中设置了一些错误的设置?我所做的就是从Xcode获取模板详细主应用程序.

workspace xcode build-dependencies

8
推荐指数
1
解决办法
1万
查看次数

如何在Android Studio中创建自己的gradle依赖库?

为了使用Android Studio开发Android应用程序,通常我们用来添加依赖项build.gralde而不是添加jar或库.下面给出的例子

compile 'com.android.support:support-v4:23.4.0'
compile 'com.android.support:recyclerview-v7:23.4.0'
compile 'com.google.android.gms:play-services:9.2.1'
Run Code Online (Sandbox Code Playgroud)

如何在Android Studio中创建自己的gradle依赖库?

android build-dependencies build.gradle android-gradle-plugin android-studio-2.1

8
推荐指数
2
解决办法
5966
查看次数

为什么 FetchContent 更喜欢子目录包含而不是安装依赖项?

考虑两个软件项目proj_aproj_b,后者取决于前者;两者都使用 CMake。

在阅读现代 CMake 时,人们会得到这样的信息:表达依赖关系的“适当”方式是通过目标依赖关系;并且应该进行安排,以便将依赖项目表示为您可以依赖的(导入的)目标。更具体地说,在我们的示例中,proj_b通常会具有:

find_package(proj_a)

# etc etc.

target_link_library(bar proj_a::foo)
Run Code Online (Sandbox Code Playgroud)

并且proj_a需要使用 CMake 安装和导出相关命令在proj_bCMake 调用将搜索proj_a-config.cmake.

我喜欢这种方法并鼓励其他人适应它。它提供了选择您自己的版本与proj_a系统版本的灵活性;proj_a并且还允许通过脚本进行非 CMake 的操作Findproj_a.cmake(同样,可以是系统级的或 的一部分proj_b)。

到目前为止一切都很好,对吧?然而,有些人希望在依赖关系方面“把事情掌握在自己手中” - CMake 官方承认了这一点,使用诸如ExternalProject和最近的FetchContent之类的命令:这允许proj_b的配置阶段实际下载一个(构建的,或者在我们的例子中是 proj_a 的源形式)版本。

让我困惑的是,proj_a下载后,比如说一个external/proj_a目录,CMake 的默认行为将是

add_subdirectory(external/proj_a)
Run Code Online (Sandbox Code Playgroud)

也就是说,将它们用作proj_a子项目proj_b并一起构建。虽然上面的惯用用法允许维护者proj_a在我的 CMakeFile 中“做自己的事情”,并且仅通过我导出/安装的内容为其他人保持整洁。

我的问题:

  1. 为什么有意义add_subdirectory(),而不是构建、安装和执行相当于find_package()满足依赖性?或者更确切地说,为什么应该将前者而不是后者作为默认值?
  2. 我真的应该编写我的项目级别CMakeLists.txt才能与add_subdirectory()“ed”兼容吗?

注意:仅举一些具体示例来说明此用途如何限制proj_a

  • 必须使用唯一的选项名称,不可能与超级项目名称冲突。所以不再是WITH_TESTS, …

installation build cmake build-dependencies fetchcontent

8
推荐指数
1
解决办法
1434
查看次数

如何安装Debian软件包的Build-Depends和Depends

如果我有一个debian/control文件Build-DependsDepends条目.

如何安装这两组依赖项?

目前我正在使用以下命令创建一个依赖于Build-Depends但不依赖于的存根包Depends.

$ mk-build-deps --build-dep \
&& dpkg -i *.deb \
|| apt-get update && apt-get install --fix-broken --yes \
Run Code Online (Sandbox Code Playgroud)

debian dependencies package build-dependencies

7
推荐指数
1
解决办法
1221
查看次数

使用 npx 运行 npm 包是否会导致安装 devDependency?

我发现很难在网络上获得明确的答案。当您在带有 npx 的包中运行命令(例如npx mypackage sayhello)时,是否安装了该包中的 devDependency?我猜是的,但不确定。

node.js build-dependencies npm npx

7
推荐指数
1
解决办法
2721
查看次数