Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包
包
在Java中,包是用来管理和组织类的,可以避免类名重复和冲突。包名是由完整类名组成的,例如com.example.myapp
。约定俗成的做法是让包名和域名一致。
如何定义包
在Java源代码的开头,使用package
关键字来定义包,例如:
package com.example.myapp;
这个语句的意思是,该文件中的Java代码都属于com.example.myapp
这个包。
如何使用包
在Java类中,可以使用import
关键字引入其他包中的类。例如:
import java.util.ArrayList;
这个语句的意思是,在当前类中使用ArrayList
时,可以直接写ArrayList
,而不需要写全称java.util.ArrayList
。
另外,在类名不冲突的情况下,也可以使用通配符*
来导入整个包。例如:
import java.util.*;
这个语句的意思是,导入java.util
包中的所有类。
环境变量
环境变量是系统变量,用来存储系统信息,例如Java的安装路径。在Java开发中,经常需要用到环境变量。
如何设置环境变量
在Windows系统中,可以在“控制面板”->“系统和安全”->“系统”->“高级系统设置”->“环境变量”中设置环境变量。
在Linux或Mac系统中,可以在/etc/profile
文件或用户目录下的.bashrc
文件中设置环境变量。例如,在.bashrc
文件中添加以下内容:
export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
这个脚本的意思是,将/usr/local/jdk1.8.0_181
设置为Java的安装路径,并将$JAVA_HOME/bin
添加到系统的PATH
变量中,以便系统能够找到Java命令。
如何使用环境变量
在Java代码中,可以使用System.getenv()
方法获取系统的环境变量。例如:
String javaHome = System.getenv("JAVA_HOME");
这个代码的意思是,获取环境变量JAVA_HOME
的值,并赋给变量javaHome
。
访问控制
在Java中,通过访问控制来控制类、变量和方法的访问权限。Java有以下4种访问修饰符:public
、protected
、default
(默认)和private
。
public
public
修饰符可以被任何类访问。例如:
public class MyClass {
public int x;
public void myMethod() {
System.out.println("Hello World!");
}
}
这个类和它的公共成员(变量和方法)可以被任何类访问。
protected
protected
修饰符可以被本类、同一包中的类和子类访问。例如:
protected class MyClass {
protected int x;
protected void myMethod() {
System.out.println("Hello World!");
}
}
这个类和它的受保护的成员(变量和方法)可以被本类、同一包中的类和子类访问。
default
default
修饰符可以被本类和同一包中的类访问。如果没有修饰符,即为default
。例如:
class MyClass {
int x;
void myMethod() {
System.out.println("Hello World!");
}
}
这个类和它的默认成员(变量和方法)可以被本类和同一包中的类访问。
private
private
修饰符只能被本类访问。例如:
class MyClass {
private int x;
private void myMethod() {
System.out.println("Hello World!");
}
}
这个类和它的私有成员(变量和方法)只能被本类访问。
Maven profile实现多环境打包
Maven是一种自动化构建工具,可以通过配置和插件来管理项目的编译、打包、测试、部署等过程。Maven支持多环境打包,也即对不同的环境(开发、测试、生产)生成不同的包。实现方法是通过使用Maven的profile机制。
如何使用Maven profile
在Maven的pom.xml
文件中,使用<profiles>
元素来定义profile。例如:
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
这段代码的意思是,定义了3个profile(dev
、test
、prod
),每个profile中都有一个env
属性,分别设置为dev
、test
、prod
。
同时,在<build>
元素中,使用<resources>
元素来定义要打包的文件和目录。例如:
<build>
<resources>
<resource>
<directory>src/main/resources/${env}</directory>
</resource>
</resources>
</build>
这段代码的意思是,在打包时,将src/main/resources/${env}
目录中的文件打入包中。${env}
将会被${env}
属性的值替换。
示例
以下是一个完整的示例代码。
src/main/java/com/example/myapp/MyApp.java
:
package com.example.myapp;
public class MyApp {
public static void main(String[] args) {
System.out.println("Hello " + getEnv());
}
private static String getEnv() {
return System.getenv("ENV");
}
}
src/main/resources/dev/application.properties
:
message=Hello dev!
src/main/resources/test/application.properties
:
message=Hello test!
src/main/resources/prod/application.properties
:
message=Hello prod!
pom.xml
:
<project>
<groupId>com.example</groupId>
<artifactId>myapp</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<resources>
<resource>
<directory>src/main/resources/${env}</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
</project>
在命令行中使用以下命令,可以生成不同的包:
mvn package -P dev
mvn package -P test
mvn package -P prod
运行target/myapp-1.0-SNAPSHOT.jar
,即可看到不同环境的输出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包 - Python技术站