clean即使项目依赖关系管理配置未更改,SBT 也会在每次运行依赖项解析后运行.在CI服务器上运行时,这非常耗时.
但是文件说:
- 通常,如果自上次成功解析后没有依赖关系管理配置发生更改且检索到的文件仍然存在,则sbt不会要求Ivy执行解析.
如何在每次构建项目时阻止sbt进行依赖项解析sbt clean publish-local?
更新
我发现当我进入交互模式时,sbt也会运行解析sbt.
UPDATE2
正如@Ezhik指出的,如果我能保持target/resolution-cache那么SBT不会解决后干净的依赖.所以我试图resolution-cache从目标目标移出:
ivyConfiguration <<= (externalResolvers, ivyPaths, offline, checksums, appConfiguration, target, streams) map { (rs, paths, off, check, app, t, s) =>
val resCacheDir = t / ".." / "resolution-cache"
new InlineIvyConfiguration(paths, rs, Nil, Nil, off, Option(lock(app)), check, Some(resCacheDir), s.log)
}
Run Code Online (Sandbox Code Playgroud)
现在,Build.scala解析缓存中的代码被放置在项目根目录中,因此在之后保留clean,但无论如何都要进行解析.所以我认为这种方法是错误的或不充分的.
我需要在sbt build中配置Ivy 锁定策略.
我试图把externalIvySettings(baseDirectory(_ / "ivysettings.xml"))在Build.scala
ivysettings.xml:
<ivysettings>
<settings defaultResolver="default"/>
<include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
<lock-strategies>no-lock</lock-strategies>
</ivysettings>
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,sbt无法解析依赖关系(我想因为解析器被来自ivysettings的解析器屏蔽).
如何配置锁定策略Build.scala?
我有Sessions和Users类与以下bi-directional OneToMany映射(以休眠逆向工程工具生成):
public class Users {
@OneToMany(fetch=FetchType.LAZY, mappedBy="users")
public Set<Sessions> getSessionses() {
return this.sessionses;
}
}
public class Sessions {
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="USER_ID")
public Users getUsers() {
return this.users;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我为用户创建新会话的代码:
Session s = ...;
Users user = (Users) s.createCriteria(Users.class)
./*restrictions...*/.uniqueResult();
Sessions userSession = new Sessions();
userSession.setUsers(user);
s.save(userSession);
user.getSessionses().add(userSession); // here getSessionses() has 2k records
Run Code Online (Sandbox Code Playgroud)
用户有 2k 个会话,因此最后一行非常慢。
如何在不获取整个会话集合的情况下将会话与用户链接?
假设我有以下接口:
interface A
interface B
interface C
Run Code Online (Sandbox Code Playgroud)
我想为类型 A 和 B 创建具有多个上限的类:
class First<T>(val t: T) where T : A, T : B
Run Code Online (Sandbox Code Playgroud)
我还想对 C 类型使用委托:
class Second(val c: C) : C by c
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将两者结合在一个类声明中?
我试过这个:
class Third<T>(val t: T, val c: C) where T : A, T : B, C by c // syntax error: "Expecting : before the upper bound"
Run Code Online (Sandbox Code Playgroud)
和这个:
class Third<T>(val t: T, val c: C) : C by c where T : A, T : …Run Code Online (Sandbox Code Playgroud) 我在Amazon S3上设置了一个示例静态网站,我在其中添加了一个自定义文件夹,其中包含文件:custom-folder/index.html但是我Access Denied在尝试访问URL时遇到错误/custom-folder.
索引文档配置为index.html,所以S3应该index.html在我访问/custom-folderurl时服务,但它不起作用.
我怎样才能解决这个问题?
我希望这段代码打印"a",但它打印"b".为什么?
Nil match {
case Nil | _ if 1 > 1 => println("a")
case x => println("b")
}
Run Code Online (Sandbox Code Playgroud)
但是此代码按预期打印"a"
Nil match {
case Nil => println("a")
case x => println("b")
}
Run Code Online (Sandbox Code Playgroud) 我需要做平行平面图。假设我有以下代码:
val coll: List<Set<Int>> = ...
coll.flatMap{set -> setOf(set, set + 1)}
Run Code Online (Sandbox Code Playgroud)
我需要这样的东西:
coll.pFlatMap{set -> setOf(set, set + 1)} // parallel execution
Run Code Online (Sandbox Code Playgroud) 在我的 Spring Boot 应用程序中,我需要处理带有日期时间字段的表单并将其转换为LocalDateTimeJava 格式。
我指定了模式"YYYY-MM-dd HH:mm",但当我提交带有输入值的表单时,它无法转换1990-01-01 10:10。
这是表单对象:
public class UserForm {
@NotNull
@DateTimeFormat(pattern = "YYYY-MM-dd HH:mm")
private LocalDateTime dateTime;
// getters, setters
}
Run Code Online (Sandbox Code Playgroud)
控制器:
@RequestMapping("/users")
@Controller
public class UserController {
@GetMapping("")
public String userForm(UserForm userForm) {
return "/users/form";
}
@PostMapping("")
public String postForm(@Valid UserForm userForm, BindingResult bindingResult) {
System.out.println(userForm + " " + bindingResult);
return "/users/form";
}
}
Run Code Online (Sandbox Code Playgroud)
和百里香形式:
<form th:object="${userForm}" th:action="@{/users}" method="post">
<span th:each="err: ${#fields.errors('dateTime')}" th:text="${err}" style="background-color:red;color:white;"/>
<input type="text" th:field="*{dateTime}"/>
<input …Run Code Online (Sandbox Code Playgroud) scala ×3
ivy ×2
java ×2
kotlin ×2
sbt ×2
amazon-s3 ×1
coroutine ×1
delegation ×1
generics ×1
hibernate ×1
one-to-many ×1
spring ×1
spring-boot ×1
static-site ×1
validation ×1