小编Luk*_*fer的帖子

使用 gradle 复制一个文件的最优雅的方法是什么

复制一个文件并用 gradle 重命名它的最简洁、最优雅和最短的方法是什么?

到目前为止我只能想到这个:

copy {
    from projectDir
    into projectDir
    include '.env.template'
    rename '.env.template', '.env'
}
Run Code Online (Sandbox Code Playgroud)

gradle

6
推荐指数
1
解决办法
6457
查看次数

Android Studio:Gradle 构建任务在哪里定义?

我正在尝试了解 gradle 构建的工作原理。当我进行构建时,我看到执行了一堆任务,例如:

app:assembleDebug
app:preBuild
app:packageDebug
Run Code Online (Sandbox Code Playgroud)

我想看看这些任务到底在做什么。我假设这些是 Gradle / Groovy 脚本。我尝试解压缩 Android Studio 下的所有 jars。那里有很多东西,但我没有看到任何相关的东西(我可能在大量列表中遗漏了一些东西)。这些任务是否隐藏在类文件中?我找错地方了吗?

gradle android-studio build.gradle android-gradle-plugin

6
推荐指数
1
解决办法
862
查看次数

如何使用 System.IO.Abstraction 模拟 FileStream?

我正在尝试使用System.IO.Abstraction项目和 System.IO.Abstraction.TestingHelpers 来模拟FileStream.

这是使用我要测试的文件流的代码:

private readonly IFileSystem _fileSystem;

public void ExtractImageAndSaveToDisk(IXLPicture xlPicture, string filePath)
{
    using (MemoryStream ms = new MemoryStream())
    {
        xlPicture.ImageStream.CopyTo(ms);

        using (FileStream fs = (FileStream)_fileSystem.FileStream.Create(filePath, FileMode.Create))
        {
            ms.CopyTo(fs);
            fs.Flush();
            fs.Close(); 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我设置测试的方式:

[TestMethod]
public void CheckFileIsSavedToDisk()
{
    // Arrange
    var mockFileSystem = new MockFileSystem(new Dictionary<string, MockFileData>
    {
        { @"c:\Test\Images\", new MockDirectoryData() },
    });

    var xlPicture = GetXLPicture();
    var filePath = @"c:\Test\Images\myimage.jpeg";

    var sut = new CostSheetImageExtractor(mockFileSystem);

    // Act
    sut.ExtractImagesAndSaveToDisk(xlPicture, filePath);
} …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing

6
推荐指数
1
解决办法
6172
查看次数

Android Studio gradle中排除一个类文件

在我的项目中,我需要导入第三方jar文件和Facebook SDK。

compile files('libs/SkinSDK.jar')
compile 'com.facebook.android:facebook-android-sdk:4.14.0'
Run Code Online (Sandbox Code Playgroud)

两者都包含同一BundleJSONConverter类。所以,我无法生成签名的 APK。它总是显示重复的条目 com/facebook/internal/BundleJSONConverter。

所以,我想在 Facebook 或 SkinSDK.jar 中排除。我尝试过像

compile ('com.facebook.android:facebook-android-sdk:4.14.0') {
    exclude group: 'com.facebook.internal', module: 'BundleJSONConverter'
}
Run Code Online (Sandbox Code Playgroud)

它不起作用并显示相同的错误。

java android gradle facebook-sdk-4.x

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

如何在gradle中创建自定义任务以将java和kotlin代码打包到jar中?

我们有一个多模块化设置,我们在模块之间共享一些测试类(主要是Fakes实现).我们当前的解决方案(您可以在下面找到)仅适用于用Java编写的类,但我们正在寻找支持共享的kotlin类.

if (isAndroidLibrary()) {
    task compileTestCommonJar(type: JavaCompile) {
        classpath = compileDebugUnitTestJavaWithJavac.classpath
        source sourceSets.testShared.java.srcDirs
        destinationDir = file('build/testCommon')
    }
    taskToDependOn = compileDebugUnitTestSources
} else {
    task compileTestCommonJar(type: JavaCompile) {
        classpath = compileTestJava.classpath
        source sourceSets.testShared.java.srcDirs
        destinationDir = file('build/testCommon')
    }
    taskToDependOn = testClasses
}

task testJar(type: Jar, dependsOn: taskToDependOn) {
    classifier = 'tests'
    from compileTestCommonJar.outputs
}
Run Code Online (Sandbox Code Playgroud)

我如何修改compileTestCommonJar它支持kotlin?

gradle kotlin

5
推荐指数
1
解决办法
326
查看次数

gradle任务以独立压缩多个目录

我正在尝试创建一个任务,该任务看起来在一个文件夹内,并将该文件夹内的所有文件夹压缩到某个输出文件夹。

初始状态:

Folder1
    -> project1
        ->code //some more files within project1
    -> project2
        ->code
Run Code Online (Sandbox Code Playgroud)

目标状态:

Destination
    project1.zip
    project2.zip
Run Code Online (Sandbox Code Playgroud)

我尝试使用下面的代码,但它压缩了folder1内的所有内容

task myZip(type: Zip) {
   from 'Folder1'   
   archiveName 'Compress.zip'
   destinationDir file('build')
}
Run Code Online (Sandbox Code Playgroud)

我可能需要使用一些包含project1和project2信息的集合,并将其迭代地压缩到目标文件夹。这种方法有问题。

gradle build.gradle

3
推荐指数
1
解决办法
1617
查看次数

Gradle 项目名称以“.”开头

当当前目录的名称以'.'(例如/home/you/.gproject)开头时,

gradle build
Run Code Online (Sandbox Code Playgroud)

返回

项目名称.gproject'.'. 这已被弃用,并计划在 Gradle 5.0 中删除。设置rootProject.name或调整include语句(参见https://docs.gradle.org/4.3/dsl/org.gradle.api.initialization.Settings.html#org.gradle.api.initialization.Settings:include(java.lang. String[])了解更多详情)。

我该如何解决?我应该避免使用这样的名称(以 a 开头'.')吗?

如果我在 中输入这样的名称settings.gradle,则会出现相同的错误。

java gradle

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

Gradle 覆盖默认检查任务

我已经将我的 sourceSets 定义为

sourceSets {
    // Configuring SourceSets for all connector source files.
    main {
        java {
            srcDirs = ['src']
        }
    }
    test {
        // integrationTests
    }
    unitTests {
        //unitTests
    }
}

test {
   // integrationTests
}

task('unitTest', type: Test) {
  //unitTests
}
Run Code Online (Sandbox Code Playgroud)

当我开始时,./gradlew build它的check任务基本上称为test目标。

我可以覆盖默认gradle build任务的“检查”机制来调用unitTest这里而不是调用test吗?

java unit-testing build gradle

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

基本 Gradle 复制任务不起作用(直到直接调用)

我有一个简单的 Gradle 脚本:

task copyall(){
    println 'starting...'
    task copyA(type: Copy) {
        mkdir 'web'
        from 'src'
        into 'web'
    }
}
Run Code Online (Sandbox Code Playgroud)

它的行为很奇怪:如果我从命令行调用“gradle copyall” - 它会创建目录,但不会将文件从“src”复制到“web”文件夹。如果我从命令行直接调用task.copyA(“gradle copyA”) - 它会创建dir并复制文件(带有子文件夹)。

为什么task.copyA仅作为task.copyall的子任务部分执行?

copy mkdir gradle

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

Django 用户管理:如何避免每个用户看到其他用户的内容和数据?

在我的小型 Django 项目中,用户可以注册并通过填写一些 ModelForms 来使用他们自己的数据填充现有模型。

问题是,登录后,任何用户不仅可以看到自己的数据,还可以看到其他用户创建的数据。我需要避免这种情况。
每个用户都应该能够查看、修改和与他们自己的数据进行交互。

每个模型都有一个ForeignKey链接到User.
我可能在视图中遗漏了什么吗?
它们只是不引用的基于类的视图User,它们只有LoginRequiredMixin装饰器。

对于登录视图,我使用的是 Django 标准,对于注册视图,我创建了一个UserFormView.

# Register page
url(r'^register/$', views.UserFormView.as_view(), name='register'),

# Login page
url(r'^accounts/login/$', auth_views.LoginView.as_view(), name='login'),
Run Code Online (Sandbox Code Playgroud)

以下是我的看法:

class AllProgramsView (LoginRequiredMixin, generic.ListView):
    template_name = 'programs/index.html'
    context_object_name = 'programs_list'

    def get_queryset(self):
        return Program.objects.all()

class ProgramDetailView (LoginRequiredMixin, generic.DetailView):
    model = Program
    template_name = 'programs/program.html'

class ProgramCreate(LoginRequiredMixin, CreateView):
    model = Program
    form_class = ProgramFormClass

class ProgramUpdate(LoginRequiredMixin, UpdateView):
    model = Program
    form_class = ProgramFormClass
Run Code Online (Sandbox Code Playgroud)

models.py …

python django django-users

0
推荐指数
1
解决办法
1036
查看次数