小编Pie*_*ers的帖子

从单个任务发布多个工件

我有一个gradle任务,它执行一个创建多个zip文件的命令行工具.生成文件后,我希望Gradle将生成的zip文件发布到Maven存储库.每个zip文件都有自己的artifactId和groupId(可以从zip文件的文件名派生).zip文件的数量和名称事先是未知的,每次运行时可能会有所不同.

我不是Gradle专家,但在研究了文档后,我认为我应该将zip文件声明为maven-publish插件的发布.我知道如何使用生成单个存档文件的静态文件和任务来执行此操作.我无法在单个任务中找到有关如何使用多个归档执行此操作的示例,就像我的情况一样.

让我们说我build.gradle看起来像这样:

apply plugin: 'base'
apply plugin: 'maven-publish'

task init << {
  buildDir.mkdirs()
}

task makeZipfiles(type: Exec, dependsOn: 'init') {
  workingDir buildDir
  commandLine 'touch', 'test1.zip', 'test2.zip' 
  // actual result files will be different on each run
}

publishing {
  publications {
    // ??? Publication of all files from task makeZipfiles, 
    // each with its own groupId and artifactId
  }
}
Run Code Online (Sandbox Code Playgroud)

我已经能够通过迭代构建目录中的文件来创建出版物,但这只有在我第一次运行makeZipfiles任务然后运行发布任务时才有效.我想要的是使发布任务依赖于makeZipfiles任务,使用makeZipfiles任务的输出文件进行发布.

定义任务,工件和/或出版物以获得所需结果的正确方法是什么?

gradle

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

限制Log4J中的消息长度

我正在使用Log4J进行日志记录的应用程序.有时,应用程序会创建非常长,> 10000个字符的日志消息.当日志显示在Eclipse的控制台窗口中时,这会导致性能问题.

我想限制最大消息长度,将长消息截断为最大长度.我怎么能用Log4J做到这一点?

log4j

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

UISearchBar在自定义NavigationBar中

我正在开发一个iPhone应用程序,我正在继承UINavigationBar来创建我的自定义导航栏.我想要的是一个更高的导航栏,以及一个位于titleView中的UISearchBar.我想在导航栏中留出更多空间,因为我想在搜索栏下面的底部放置一个分段控件.这是我到目前为止所做的:

// Custom navigation bar implementation

const CGFloat BUNavigationBarHeightIncrease = 38.0f;

@implementation BUNavigationBar

// This resizes the navigation bar height
- (CGSize)sizeThatFits:(CGSize)size {

    CGSize amendedSize = [super sizeThatFits:size];
    amendedSize.height += BUNavigationBarHeightIncrease;

    return amendedSize;
}

// This repositions the navigation buttons 
- (void)layoutSubviews {
    [super layoutSubviews];

    NSArray *classNamesToReposition = @[@"UINavigationButton"];

    for (UIView *view in [self subviews]) {

        if ([classNamesToReposition containsObject:NSStringFromClass([view class])]) {

            CGRect frame = [view frame];
            frame.origin.y -= BUNavigationBarHeightIncrease;

            [view setFrame:frame];
        }
    }
}

@end
Run Code Online (Sandbox Code Playgroud)

我将此导航栏分配给导航控制器,如下所示:

- (IBAction)searchButton:(id)sender {
    SearchViewController …
Run Code Online (Sandbox Code Playgroud)

uinavigationbar uisearchbar ios

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

AFNetworking不缓存HTTPS请求

我们正在构建一个iOS应用程序,它使用AFNetworking连接到运行Tornado的服务器.服务器Cache-Control: private, max-age=900在响应中包含标头.在我的本地计算机上运行服务器时,我可以告诉AFNetworking使用缓存的值,因为服务器没有收到来自应用程序的重复请求的请求.当我们将相同的Tornado服务器部署到测试机器时,来自应用程序的每个请求都会导致在服务器上收到请求,忽略缓存的值.

两种设置之间的唯一区别是服务器的URL以及通过HTTPS连接访问测试服务器的事实,而localhost使用HTTP.HTTPS是否会影响AFNetworking的缓存,如果是这样,我们如何让AFNetworking尊重缓存头?

caching ios afnetworking

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

Objective-c属性未在ARC下发布

我想测试弧下的属性属性.我NSStringClass1.h(接口文件)下创建了两个属性:

@interface Class1 : NSObject
@property (nonatomic, strong) NSString *str1;
@property (nonatomic, weak) NSString *str2;
@end
Run Code Online (Sandbox Code Playgroud)

然后我在Class1.m(实现文件)下创建了一个测试方法:

@implementation Class1

- (void)testMethod {
    NSString *strt1 = @"exampleString1";
    NSString *strt2 = @"exampleString2";

    self.str1 = strt1;
    self.str2 = strt2;

    strt1 = nil;
    strt2 = nil;

    dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, QOS_CLASS_BACKGROUND);
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), aQueue, ^{
        [self testMethod2];
    });
}

- (void)testMethod2 {
    NSLog(self.str1);
    NSLog(self.str2);
}
@end
Run Code Online (Sandbox Code Playgroud)

我在testMethod2方法中设置了一个断点然后检查我的NSString属性.我假设str2设置为nil但是在运行代码后结果是;

2015-07-03 14:14:04.412 ARCTEST …

xcode objective-c ios automatic-ref-counting

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