默认情况下,所有gradle java项目都有一个version属性.通常,这看起来像:
allprojects {
apply plugin: 'java'
// ...
// configure the group and version for this project
group = 'org.example'
version = '0.2-SNAPSHOT'
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使这里定义的"版本"属性可用于构建的Java代码?我想拥有的是这个项目中的类:
public class BuildVersion {
public static String getBuildVersion(){
return // ... what was configured in gradle when project was built
}
}
Run Code Online (Sandbox Code Playgroud)
我想这可以通过某种源代码生成来完成.或者让gradle将变量写入某种配置文件中src/main/resources.在Gradle中有"标准"(即普遍接受的)方式吗?
在此先感谢您的帮助。
我想要实现的是项目版本 ( Implementation-Version) 在启动时打印在一个类中,以便我可以从日志文件中跟踪版本。
我构建了一个包含以下类的 JAR 文件:
com.company.core.common.ClassA
com.company.core.security.ClassB
com.company.core.sql.ClassC
Run Code Online (Sandbox Code Playgroud)
在 的构造函数中com.company.core.sql.ClassC,我想通过调用 来调用System.out.println()打印出Implementation-Version存储在META-INF/MANIFEST.MF文件中的内容this.class.getPackage().getImplementationVersion(),但是null当通过 Maven 测试类启动该类时,它正在获取值。
我的MANIFEST.MF文件包含以下详细信息:
Manifest-Version: 1.0
Implementation-Title: Company Core Library
Implementation-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: simon
Implementation-Vendor-Id: com.company.core
Build-Time: 2017-02-18T15:07:33Z
Class-Path: lib/sqljdbc42-4.2.jar lib/log4j-api-2.7.jar lib/log4j-core
-2.7.jar lib/json-20160810.jar lib/junit-4.12.jar lib/hamcrest-core-1
.3.jar
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_102
Implementation-Vendor: Company
Name: com/company/core/
Implementation-Vendor-Id: com.company.core
Implementation-Title: Company Core Library
Implementation-Version: 1.0
Implementation-Vendor: Company
Run Code Online (Sandbox Code Playgroud)
我能得到Implementation-Version …
我正在尝试从清单文件中提取信息以显示在我的文件中的方法之一中jar,但似乎遇到了一些问题。任何帮助表示赞赏。
清单文件:
Manifest-Version: 1.0
Created-By: 1.8.0_60 (Oracle Corporation)
Main-Class: com.example.package1.myClass
Name: com/example/package1
Specification-Title: MyPackage
Specification-Version: v1.1
Specification-Vendor: MyCompanyName
Implementation-Title: MP
Implementation-Version: 2015-11-05-C
Implementation-Vendor: MyName
Name: com/example/package2
Specification-Title: MySecondaryPackage
Specification-Version: v2.0
Specification-Vendor: MyCompanyName
Implementation-Title: M2ndP
Implementation-Version: 2015-11-05-C
Implementation-Vendor: MyName
Run Code Online (Sandbox Code Playgroud)
myClass.java:
package com.example.package1;
import com.example.package2;
class myClass {
public static void main(String[] args) {
try {
myClass clz = new myClass();
Thread.sleep(10000); //pause 10 seconnds so we can see what's spit out
} catch (Exception e) {
//excluded in example …Run Code Online (Sandbox Code Playgroud)