我正在阅读make 手册中的自动依赖项生成,但我不明白为什么需要此功能。我正在开发并从头开始编写的项目的结构如下:
在 makefile 中,我传递-I .
给编译器。当它在目录X中遇到.cpp文件时,它会在同一目录(或目录中)中搜索.h文件.
。当解析 .h 文件时,它会遇到相对于该.
文件夹的包含,因此它会知道在哪里查找它们。
现在,如果代码可以像我上面描述的那样构造,为什么有人想要生成带有该标志的依赖项列表-M
并使用 sed 来生成一个晦涩的 .d 文件(依赖项 fie)?我不认为从代码文件生成特定的依赖项列表有什么意义。
我有一些节点 docker-containers,它们基本上看起来像:
# core nodejs just installs node and git on archlinux
FROM core/nodejs
# clones directory into current working dir
RUN git clone https://github.com/bodokaiser/nearby .
# installs all dependencies
RUN npm install
# lets node execute the source code
CMD ["node", "index.js"]
Run Code Online (Sandbox Code Playgroud)
当我现在重建映像以收集新更新时,它会从 npm 下载所有依赖项。这总是需要大约 5 分钟。
我现在想知道如何避免重新安装所有依赖项。
到目前为止,我的一个想法是使用VOLUME
然后与主机共享代码存储库,这会使在其他主机上使用该图像变得困难。
更新: 我的另一个想法是创建一个包含 git repo 并与运行时容器共享的卷容器。但是,repo 容器必须能够以某种方式重建另一个容器?
信息:在 Windows 7 上使用 Gradle 2.14 构建 JAVA 多项目。
当我在我的机器上构建时,我想在我的机器上使用库/子项目。当 Jenkins 构建项目时,他将使用我的 repo 中的库/子项目。
所以我做了一个“JenkinsTask”,它只存在于我的 IF 语句中。这已经几乎按照我想要的方式工作了。这里是我的根项目 gradle 脚本中的代码:
task JenkinsTask() {
//doing nothing
}
def ProjectB_Version //defined on command line
gradle.taskGraph.whenReady {taskGraph ->
if (taskGraph.hasTask(JenkinsTask)) {
println "Archiva dependency"
dependencies {
compile group: 'Lib_ProjectB', name: 'ProjectB', version: ProjectB_Version
}
}
else {
println "Filesystem dependency"
dependencies {
compile fileTree(dir: 'ProjectB\\build\\libs', includes: ['*.jar'])
}
}
}
compileJava.dependsOn ":ProjectB:build"
Run Code Online (Sandbox Code Playgroud)
在我的机器上,我只是运行 gradle build -PProjectB_Version=0.5
在詹金斯我跑 gradle :build jenkinstask -x :ProjectB:build -PProjectB_Version=0.5
现在的问题是是否有一种“gradle”方式来做到这一点?所以我不需要 …
我目前正在尝试在依赖项值更改时更新视图。
我已将代码从视图复制到其父级中,并且没有使用依赖项,并且工作正常。我相信我的问题在于如何创建 DependencyProperty。
public partial class CULabelConfigControl : UserControl {
private CreditUnion CU { get; set; }
public static readonly DependencyProperty CUProperty = DependencyProperty.Register(
"CU",
typeof(CreditUnion),
typeof(CULabelConfigControl),
new FrameworkPropertyMetadata(null)
);
Run Code Online (Sandbox Code Playgroud)
我目前在运行时收到错误:
"A 'Binding' cannot be set on the 'CU' property of type 'CULabelConfigControl'.
A 'Binding' can only be set on a DependencyProperty of a DependencyObject."
Run Code Online (Sandbox Code Playgroud)
任何方向正确的点都会有所帮助。如果我需要分享任何其他细节,请告诉我。
我想排除一些未使用的依赖项以减少应用程序的大小。以下是我的模块中的依赖项:
+--- project :ProjectOne
| +--- commons-io:commons-io:2.4
| \--- project :ProjectTwo
| +--- com.project:PackJPG:1.5
| +--- com.project:xz:1.2
| +--- org.ocpsoft.prettytime:prettytime:2.1.2.Final
| +--- joda-time:joda-time:2.1
| +--- project :ProjectThree
| | +--- project :Utilities
| | +--- project :ProcessPriority
| | | +--- com.nativelibs4java:bridj:0.6.2
| | | | \--- com.google.android.tools:dx:1.7
| | | +--- net.java.dev.jna:jna:4.1.0
| | | +--- net.java.dev.jna:jna-platform:4.1.0
| | | | \--- net.java.dev.jna:jna:4.1.0
| | | +--- org.tinylog:slf4j-binding:1.2
| | | | +--- org.tinylog:tinylog:1.2
| | | | \--- …
Run Code Online (Sandbox Code Playgroud) 我想在我的剧本依赖项中添加一个角色,但要基于条件。
- name: Get all install pyenv versions
command: '{{ pyenv_root }}bin/pyenv versions'
register: available_versions
tags:
- get_pyenv_versions
environment:
PYENV_ROOT: "{{ pyenv_root }}"
dependencies:
- { role: pyenv, python_versions: ["{{ mypython_version }}"], when: "mypython_version not in available_versions.stdout" }
Run Code Online (Sandbox Code Playgroud)
我想做的是,我想检查所有可用pyenv
版本,如果mypython_version
不可用,那么只有我想调用pyenv
角色,否则我不想调用它。
它给了我语法错误
ERROR! Syntax Error while loading YAML.
The error appears to have been in '/root/ansible_playbooks/roles/mydeployment/meta/main.yaml': line 9, column 1, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line …
Run Code Online (Sandbox Code Playgroud) 假设我有一个安装packages(profile::base::tools
)的类和另一个定义profile::base::yum
这些包所需的yumrepos()的类.
tools.pp:
class profile::base::tools {
$packages = [
'package1',
'package2'
]
package { $packages:
ensure => present,
}
}
Run Code Online (Sandbox Code Playgroud)
目前它的运行方式是通过base.pp:
base.pp:
include profile::base::yum
include profile::base::tools
Class['profile::base::yum'] -> [
Class['profile::base::tools']]
Run Code Online (Sandbox Code Playgroud)
所以当我运行base.pp
它时首先创建yum repos然后安装包.目前,tools.pp
首先要求yumrepos定义的依赖关系仅在提及中提及base.pp
.
我的问题是,如果我tools.pp
单独运行(出于测试目的),它不会知道依赖性,因此会失败.我可以添加include profile::base::yum
在tools.pp
类,但想知道如果为每个类标准的了解的依赖,即使它已经在别处定义的(像base.pp
)
添加以下 Hibernate Core 依赖项后尝试构建我的 Maven 项目会导致以下警告和错误 (1)
[INFO] Checking test classpath
[WARNING] Found duplicate and different classes in [javax.annotation:javax.annotation-api:1.2, javax.annotation:jsr250-api:1.0]:
[WARNING] javax.annotation.Generated
[WARNING] javax.annotation.PostConstruct
[WARNING] javax.annotation.PreDestroy
[WARNING] javax.annotation.Resource
[WARNING] javax.annotation.Resources
[WARNING] javax.annotation.security.DeclareRoles
[WARNING] javax.annotation.security.DenyAll
[WARNING] javax.annotation.security.PermitAll
[WARNING] javax.annotation.security.RolesAllowed
[WARNING] javax.annotation.security.RunAs
[ERROR] Failed to execute goal org.basepom.maven:duplicate-finder-maven-plugin:1.2.1:check (default) on project school.server: Found duplicate classes/resources! -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.basepom.maven:duplicate-finder-maven-plugin:1.2.1:check (default) on project school.server: Found duplicate classes/resources!
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at …
Run Code Online (Sandbox Code Playgroud) 假设我们有一个头文件A.h
,它依赖于B.h
和中声明的内容C.h
。B.h
也取决于C.h
,因此也包括在内。在这种情况下,我们不需要包含C.h
进去A.h
,没有它就可以编译。
但是我想知道在这些情况下最好的行动方案是什么。如果B.h
以某种方式更改并且不再依赖C.h
,A.h
则会中断。
另一方面,如果我认为到最后,重新包含所有单个依赖关系似乎是不必要/不切实际的。
我常见的情况是标准库。在几乎所有的头文件中,我都必须包含<stdint.h>
和<stdbool.h>
。我经常跳过它,因为它们已经包含在其中一个依赖项中,但这总是感觉有些武断。
我有一个带有一堆依赖项的 maven 项目,其中一个我想将一行打印到控制台以调用pulsar-log4j2-appender
. 我尝试通过在 Intellij 中打开有问题的 .class 文件:
External Libraries | Maven: org.apache.pulsar:pulsar-log4j2-appender:2.6.0 | pulsar-log4j2-appender-2.6.0.jar | org.apache.pulsar.log4j2.appender | PulsarManager.class
Run Code Online (Sandbox Code Playgroud)
当我尝试添加 System.out.println 语句时,Intellij 说该文件是只读的: