如何将项目的依赖项复制到构建目录?
这是一个非常常见的问题。我已经搜索过并发现许多线程可以回答这个问题,但没有一个解决方案正常运行。这里有三个线程(有些是很老的),它们提供了我无法工作的解决方案。
Gradle equivalent to Maven's "copy-dependencies"?
How to Copy dependencies to Build directory in Gradle
https://discuss.gradle.org/t/how-can-i-gather-all-my-projects-dependencies-into-a-folder/7146
仅供参考,我已尝试过,其中包括:
task copyDependencies(type: Copy) {
from configurations.compile
into 'dependencies'
}
task copyDependencies2(type: Copy) {
from project.configurations.compile
into project.buildDir
}
project.copy {
from project.configurations.compile
into project.buildDir
}
如果可能,我更喜欢当前推荐的最佳实践方法,而不是旧的弃用方法。我留在目前的Gradle,截至本文撰写时目前为4.7。
答案 0 :(得分:0)
建议使用内置的“分发”插件。
<reactiveui:ReactiveUserControl
x:Class="ReactiveDemo.NugetDetailsView"
xmlns:reactiveDemo="clr-namespace:ReactiveDemo"
x:TypeArguments="reactiveDemo:NugetDetailsViewModel"
xmlns:reactiveui="http://reactiveui.net"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image x:Name="iconImage" Margin="6" Width="64" Height="64"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
<TextBlock Grid.Column="1" TextWrapping="WrapWithOverflow"
Margin="6" VerticalAlignment="Center">
<Run FontSize="14" FontWeight="SemiBold" x:Name="titleRun"/>
<LineBreak />
<Run FontSize="12" x:Name="descriptionRun"/>
<LineBreak />
<Hyperlink x:Name="openButton">Open</Hyperlink>
</TextBlock>
</Grid>
</reactiveui:ReactiveUserControl>
然后,您可以运行一个命令,该命令将在一个步骤中进行编译和组装:
plugins {
id 'distribution'
}
group 'org.yourorg'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'log4j', name: 'log4j', version: '1.2.17'
}
distributions {
main {
contents {
from jar // copies your jar
from(project.configurations.runtime) // copies dependency jars
}
}
}
这会将分发创建为./build/install/
下的目录结构。
此外,您可以在./build/distributions /
gradlew installDist
如果要将构建的jar与依赖项分开,这是常规操作:
gradlew distZip
答案 1 :(得分:-1)
好的,玩了几个小时后,我有一个有效的解决方案。这与旧的解决方案截然不同,这些解决方案似乎不适用于当前版本的Gradle。这个适用于Gradle 4.7:
task jarWithDeps(dependsOn: 'jar', type: Copy) {
def conf = configurations.runtimeClasspath
from conf.allDependencies.collect { conf.files(it) }
into "${project.buildDir}/libs"
}