我想向Maven发布一个开源Java库,因此很容易被其他项目访问.Git存储库位于SourceForge,但我不太明白是否可以从这里发布.
阅读Maven指南以上传工件我发现只有三个存储库被"批准".即:
我的问题
如果我在其中一个中创建一个辅助git存储库,那么保持两个git存储库同步不是一件麻烦事吗?我的意思是,拥有重复的git存储库是否明智,只是为了能够发布到Maven Central Repository?
我有什么明智的选择?
我正在开发的服务使用 Future 来并行运行多个任务;每个任务最多可能需要一分钟才能完成。然而,外部库似乎有问题,因为在某些情况下(2% 的时间)它不会返回。在这些情况下,我想给出 2 分钟的等待时间,如果还没有返回,我想杀死 future 并稍后重新安排(最终会成功)。
我该如何杀死未来?
private void run() {
ExecutorService queue = Executors.newFixedThreadPool(1);
Future<Integer> f = queue.submit(new MyTask());
Thread.sleep(500);
try {
Integer r = f.get(120, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
e.printStackTrace();
f.cancel(true);
}
// Bad future still running here and I need it dead.
}
private class MyTask implements Callable<Integer> {
private ExternalLibrary extlib = new ExternalLibrary();
@Override
public Integer call() throws Exception {
// step 1 - do a few …Run Code Online (Sandbox Code Playgroud) 我从Ant搬到Maven,但想念一件事:执行任意任务的能力。我想摆脱蚂蚁的,build.xml但我仍然只需要它。
有时我需要为XML处理和PDF处理运行一些统计信息。它们不是构建的一部分,但无论如何我都需要使它们自动化。在Ant中,我以前只是在代码中编译并运行Java类以使用javaAnt任务,例如:
<target name="gen-stats">
<java classname="com.utl.StatsGen" classpath="build" />
</target>
<target name="compute-complexity">
<java classname="com.utl.PDFComplexity" classpath="lib/pdf-cpx.jar" />
</target>
Run Code Online (Sandbox Code Playgroud)
试图把我的大脑包起来。也许Maven并非旨在提供任何自动化方面的帮助,而只是解决“面向构建”的任务。是吗?
我想改进“gitbranch”命令的格式,我在其中添加了包含提交日期和提交用户的逻辑。
git for-each-ref refs/heads/ --format='%(HEAD) %(颜色:粗体黄色)%(refname:short)%(颜色:重置)%(颜色:绿色)%(committerdate)%(颜色:重置) - %(内容:主题) %(颜色:暗白色) - %(作者姓名)%(颜色:重置)'
是否有办法改进从第一个(实际)输出到第二个(所需)输出的格式?
这根本不是什么紧急的事情,但却是一件好事。我使用过 git 格式,但我的知识有限。
我想使用 Java Stream 使用数据库游标。我希望 Java 流根据需要获取和处理行,并避免首先将所有 500 万行加载到内存中,然后再处理它们。
是否可以在不将整个表加载到 RAM 中的情况下使用它?
到目前为止我的代码如下所示:
Cursor<Product> products = DAO.selectCursor(...);
// 1. Initialize variables
long count = 0;
...
for (Iterator<Product> it = products.iterator(); it.hasNext();) {
Product p = it.next();
// 2. Processing each row
...
}
// 3. Concluding (processing totals, stats, etc.)
double avg = total / count;
...
Run Code Online (Sandbox Code Playgroud)
它确实工作得很好,但是有点麻烦,我想利用 Stream API。
在 Java 中开发 Gradle 插件所需的确切依赖是什么?理想情况下,我想从众所周知的存储库(例如 Maven Central 或类似存储库)中获取它。
我有一个具有核心功能的 Maven 项目,我刚刚添加了两个额外的插件,一个用于 Ant,一个用于 Maven。它们已经过测试和工作;简单!现在,我想为 Gradle 插件添加第三个模块,以使任何 Gradle 项目也可以使用此功能。
但是,我找不到开发 Gradle 插件所需的确切依赖项。
Gradle 文档(例如https://docs.gradle.org/current/userguide/java_gradle_plugin.html)至少可以说写得不是很好。他们提到:
gradleAPI()依赖java-gradle-plugin依赖但他们很不清楚......没有组,没有版本(真的吗?)。
如果有人能启发我从哪里获得这些依赖项,我将非常感激。
我的多 jar 应用程序在 Java 11 中运行并显示与 Log4j2 相关的警告:
警告:不支持 sun.reflect.Reflection.getCallerClass。这会影响性能。
它没有崩溃,但很困扰我,因为运营团队(AppDynamics 监视器)向我询问了它。我读到我需要在清单中使用“Multi-Release:true”条目,但我不知道如何告诉 Maven Assembly Plugin 添加它。
我没有在 pom.xml 中使用任何其他插件。我应该使用Maven Shade Plugin吗?
无论如何,这是我的 pom.xml 的 Maven Assembly Plugin 部分。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我包含的库(我也写过)使用 Log4j 2 作为依赖项,如下所示:
<!-- Log4j 2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.12.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我怎样才能摆脱这个警告?
我的查询中有一些复杂的比较,我想确保在存在空值的情况下正确理解逻辑。在 PostgreSQL 中,“unknown”似乎与“null”是一样的,我没想到会这样。
这是我的例子:
create table tab (col int);
insert into tab (col) values (7), (11), (null);
select col,
(col = 7) is true as is_true,
(col = 7) is false as is_false,
(col = 7) is unknown as is_unknown,
(col = 7) is null as is_null
from tab;
Run Code Online (Sandbox Code Playgroud)
它显示输出:
+-----+--------+---------+-----------+--------+
|a |is_true |is_false |is_unknown |is_null |
+-----+--------+---------+-----------+--------+
|7 |true |false |false |false |
|11 |false |true |false |false |
|null |false |false |true |**true**|
+-----+--------+---------+-----------+--------+
Run Code Online (Sandbox Code Playgroud)
最后一个值不应该是“假”而不是“真”吗?
java ×6
git ×2
maven ×2
maven-3 ×2
ant ×1
format ×1
future ×1
git-branch ×1
gradle ×1
java-11 ×1
java-stream ×1
log4j2 ×1
postgresql ×1
ram ×1
sql ×1