Maven詳解

来源:https://www.cnblogs.com/xw-01/p/18242916
-Advertisement-
Play Games

1 maven介紹 1)為什麼使用maven Maven是一個強大的項目管理和構建工具,它能夠簡化Java項目的構建、依賴管理和發佈過程。以下是Maven的一些主要特點和功能: 項目結構管理:Maven採用約定優於配置的原則,提供了標準的項目結構模板,使得開發人員可以快速創建和維護項目。 依賴管理: ...


1 maven介紹

1)為什麼使用maven

Maven是一個強大的項目管理和構建工具,它能夠簡化Java項目的構建、依賴管理和發佈過程。以下是Maven的一些主要特點和功能:

  1. 項目結構管理:Maven採用約定優於配置的原則,提供了標準的項目結構模板,使得開發人員可以快速創建和維護項目。
  2. 依賴管理:Maven通過中央倉庫和本地倉庫的方式管理項目的依賴庫,開發人員只需要在項目配置文件中聲明所需的依賴,Maven會自動下載並管理依賴關係。
  3. 構建工具:Maven提供了豐富的構建生命周期和插件系統,可以執行編譯、測試、打包、部署等一系列構建任務,並支持自定義插件進行擴展。
  4. 多模塊管理:Maven支持多模塊項目管理,可以將複雜的項目拆分為多個子模塊,簡化項目的管理和構建過程。
  5. 自動生成文檔:Maven可以根據項目的代碼註釋生成項目文檔,例如使用Javadoc插件生成API文檔。
  6. 版本控制:Maven提供了版本管理功能,可以輕鬆地管理項目的版本信息,並支持快速切換不同版本的依賴庫。
  7. 構建報告:Maven能夠生成詳細的構建報告,包括編譯錯誤、測試結果等信息,幫助開發人員及時發現和解決問題。
  8. 發佈管理:Maven支持項目的部署和發佈,可以將構建好的項目發佈到本地倉庫、遠程倉庫或者私服中,方便其他開發人員使用。

標準化項目結構:

image

標準化構建流程:

image

依賴管理:

使用maven前:

image

使用maven後:

image

2)maven是什麼

Apache Maven是一個開源的項目管理和構建工具,它是由Apache軟體基金會開發和維護的。Maven使用基於項目對象模型(Project Object Model,簡稱POM)的概念來管理項目,並提供了一套規範和工具來支持項目的構建、依賴管理和發佈.

Maven的項目對象模型(Project Object Model,簡稱POM)是一種XML文件,用於描述和定義Maven項目的結構、依賴關係、構建配置等信息。每個Maven項目都有一個對應的POM文件,位於項目根目錄下,文件名為pom.xml

POM文件包含了以下主要元素:

  1. 項目坐標(Project Coordinates):包括項目的groupId、artifactId和version,用來唯一標識一個項目。
  2. 依賴管理(Dependency Management):用來聲明項目所依賴的外部庫或模塊,包括依賴的groupId、artifactId和version等信息。
  3. 構建配置(Build Configuration):包括項目的構建生命周期、插件配置、資源目錄、輸出目錄等與構建相關的配置信息。
  4. 源代碼目錄(Source Directories):指定項目源代碼和測試代碼的目錄路徑。
  5. 插件配置(Plugin Configuration):用來配置Maven插件的行為和參數。
  6. 打包類型(Packaging Type):指定項目的打包類型,例如jar、war、pom等。
  7. 倉庫配置(Repository Configuration):用來配置Maven的遠程倉庫和本地倉庫。

通過POM文件,Maven可以理解項目的結構和依賴關係,以及如何進行構建和發佈。開發人員可以在POM文件中聲明和管理項目的各種屬性和配置,使得項目的構建和管理更加簡單和可控。

POM文件還支持繼承機制,可以通過父子模塊關係實現項目間的代碼復用和依賴管理。子模塊的POM文件可以繼承父模塊的配置,同時可以覆蓋或添加自己特定的配置。

image

•倉庫分類:

​ 本地倉庫:自己電腦上的一個目錄

​ 中央倉庫:由Maven團隊維護的全球唯一的倉庫

​ •地址:https://repo1.maven.org/maven2/

​ 遠程倉庫(私服):一般由公司團隊搭建的私有倉庫

​ 當項目中使用坐標引入對應依賴jar包後,首先會查找本地倉庫中是否有對應的jar包:如果有,則在項目直接引用; 如果沒有,則去中央倉庫中下載對應的jar包到本地倉庫。還可以搭建遠程倉庫,將來jar包的查找順序則變為:本地倉庫 -> 遠程倉庫 ->中央倉庫

2 maven的基本配置

maven的配置文件: conf/setting.xml

1)本地倉庫地址配置:

<!--配置本地倉庫的地址-->
<localRepository>D:\repository</localRepository>

2)中央倉庫地址配置:

<!--中央倉庫的鏡像的配置-->
<mirrors>
	<!--設置阿裡雲鏡像-->
	<mirror>  
		<id>alimaven</id>  
		<name>aliyun maven</name>  
		<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
		<mirrorOf>central</mirrorOf>          
	</mirror>
</mirrors>

3)jdk版本配置:

<profiles>
	<!--設置maven編譯的jdk的版本-->
	<profile>         
		  <id>JDK-1.8</id>           
		  <activation>               
				<activeByDefault>true</activeByDefault>               
				<jdk>1.8</jdk>          
		  </activation>           
		  <properties>               
			<maven.compiler.source>1.8</maven.compiler.source>               
			<maven.compiler.target>1.8</maven.compiler.target>               
			<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
		</properties>       
	</profile>
  </profiles>

4)idea上maven的配置

在idea的setting選項中:

image

使用本地上安裝並且配置好的maven;

使用本地配置好的maven配置文件;

使用本地倉庫;

在setting中配置完maven後, 需要在New Projects Setup中也配置一下, 否則每次新建項目都需要重新配置maven

image

3 maven的基本使用

1)常用的maven指令

compile :編譯 clean:清理 test:測試 package:打包 install:安裝

2)maven的聲明周期

Maven 構建項目生命周期描述的是一次構建過程經歷經歷了多少個事件;

Maven 對項目構建的生命周期劃分為3套

clean:清理工作:

default:核心工作,例如編譯,測試,打包,安裝等

site:產生報告,發佈站點等

image

validate(校驗)			校驗項目是否正確並且所有必要的信息可以完成項目的構建過程。
initialize(初始化)			初始化構建狀態,比如設置屬性值。
generate-sources(生成源代碼)		生成包含在編譯階段中的任何源代碼。
process-sources(處理源代碼)		處理源代碼,比如說,過濾任意值。
generate-resources(生成資源文件)		生成將會包含在項目包中的資源文件。
process-resources (處理資源文件)		複製和處理資源到目標目錄,為打包階段最好準備。
compile(編譯)			編譯項目的源代碼。
process-classes(處理類文件)		處理編譯生成的文件,比如說對Java class文件做位元組碼改善優化。
generate-test-sources(生成測試源代碼)		生成包含在編譯階段中的任何測試源代碼。
process-test-sources(處理測試源代碼)		處理測試源代碼,比如說,過濾任意值。
generate-test-resources(生成測試資源文件)	為測試創建資源文件。
process-test-resources(處理測試資源文件)		複製和處理測試資源到目標目錄。
test-compile(編譯測試源碼)		編譯測試源代碼到測試目標目錄.
process-test-classes(處理測試類文件)		處理測試源碼編譯生成的文件。
test(測試)			使用合適的單元測試框架運行測試(Juint是其中之一)。
prepare-package(準備打包)		在實際打包之前,執行任何的必要的操作為打包做準備。
package(打包)			將編譯後的代碼打包成可分發格式的文件,比如JAR、WAR或者EAR文件。
pre-integration-test(集成測試前)		在執行集成測試前進行必要的動作。比如說,搭建需要的環境。
integration-test(集成測試)		處理和部署項目到可以運行集成測試環境中。
post-integration-test(集成測試後)		在執行集成測試完成後進行必要的動作。比如說,清理集成測試環境。
verify (驗證)			運行任意的檢查來驗證項目包有效且達到質量標準。
install(安裝)			安裝項目包到本地倉庫,這樣項目包可以用作其他本地項目的依賴。
deploy(部署)			將最終的項目包複製到遠程倉庫中與其他開發者和項目共用。

4 IDEA上Maven項目的基本使用

1)項目創建

image

Maven中每個項目都有一個坐標, 只有

什麼是坐標?

​ Maven 中的坐標是資源的唯一標識

​ 使用坐標來定義項目或引入項目中需要的依賴

Maven 坐標主要組成

​ groupId:定義當前Maven項目隸屬組織名稱(通常是功能變數名稱反寫,例如:com.itheima)

​ artifactId:定義當前Maven項目名稱(通常是模塊名稱,例如 order-service、goods-service)

​ version:定義當前項目版本號

2)依賴導入

pom.xml文件中裡面是設置的所有依賴信息;

單個的依賴信息是標簽中來設置, 是通過,以及的坐標來確定依賴的位置;

<!--設置maven的依賴管理-->
	<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>5.3.3</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.3.3</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.11.0</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.11.0</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>2.11.0</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.10</version>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.18.8</version>
		</dependency>
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>5.2.0</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.21</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>2.0.5</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.5.6</version>
		</dependency>
	</dependencies>

POM文件修改後, 需要重新載入maven項目;

image

image

3)項目打包類型

在Maven中,packaging是用來指定項目打包的類型。它定義了項目構建後生成的最終產物的格式和類型。

常見的幾種packaging類型包括:

  1. jar:生成一個可執行的JAR文件,適用於Java項目。
  2. war:生成一個可部署的WAR文件,適用於Web應用程式項目。
  3. pom:不生成任何實際的產物,僅作為父項目或聚合項目的pom.xml文件存在。
  4. ear:生成一個可部署的EAR文件,適用於企業級Java應用程式項目。
  5. bundle:生成一個OSGi模塊的bundle文件,適用於基於OSGi的應用程式項目。
  6. maven-plugin:生成一個可擴展Maven生命周期的插件,適用於自定義Maven插件項目。
<!--設置項目的打包類型  web需用tomcat的是war -->
<packaging>war</packaging>

4)依賴的可傳遞性

在Maven中,依賴的可傳遞性是指當一個項目依賴於其他項目時,是否會自動引入這些被依賴項目所聲明的依賴項。

預設情況下,Maven啟用了依賴的傳遞性。也就是說,如果項目A依賴於項目B,而項目B又依賴於項目C,那麼項目A將會自動引入項目B和項目C的依賴項。

image

依賴傳遞衝突問題:

路徑優先:當依賴中出現相同的資源時,層級越深,優先順序越低,層級越淺,優先順序越高

聲明優先:當資源在相同層級被依賴時,配置順序靠前的覆蓋配置順序靠後的

特殊優先:當同級配置了相同資源的不同版本,後配置的覆蓋先配置的

5)tomcat運行maven項目

1)添加項目的war到tomcat中;

image

2)運行tomcat

3)部署當前項目(會自動運行maven指令, 生成target文件夾和打包的項目)

image

5 依賴的設置

1)依賴排除

當導入依賴spring-webmvc時, 由於spring-webmvc會依賴其他的相關依賴, 所以同時也會導入其他依賴, 利用可以指定排除spring-webmvc中所帶的其他依賴.

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>5.3.3</version>
	<exclusions>
		<exclusion>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
		</exclusion>
	</exclusions>
</dependency>

2)依賴的有效範圍

引入依賴後, 可以使用scope對該依賴的有效範圍進行設置;

scope取值 有效範圍(compile, runtime, test) 依賴傳遞 例子
compile all spring-core
provided compile, test servlet-api
runtime runtime, test JDBC驅動
test test JUnit
system compile, test
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>
	<version>2.5</version>
	<scope>provided</scope>
</dependency>

3)依賴的可選設置

在Maven中,Optional是一個用於指定依賴項的元數據標記。它提供了一種機制,用於在構建項目時指定某個依賴項是否是可選的。
當Optional設置為true時, 表示依賴為可選; 預設為false, 表示依賴為不可選;

當依賴設置為可選時,只有在項目明確聲明需要這個依賴時,它才會被包含在構建中。換句話說,可選依賴不會隱式傳遞到依賴於當前項目的其他項目中;

例如1: 假設我們正在開發一個名為library-a的庫,它依賴於另一個名為library-b的庫。然而,library-b有一些我們並不需要的依賴項。為了避免這些不必要的依賴項傳遞給使用library-a的項目,我們可以將它們設置為可選。

library-a.xml

<dependency>
  <groupId>com.example</groupId>
  <artifactId>library-b</artifactId>
  <version>1.0.0</version>
  <optional>true</optional>
</dependency>

例如2: 一個日誌庫可能支持多種日誌框架,但我們希望讓用戶選擇他們要使用的框架,而不是強制將所有可能的依賴項包含在構建中。

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.30</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.7.30</version>
  <optional>true</optional>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.30</version>
  <optional>true</optional>
</dependency>

slf4j-api是必需的依賴項,而slf4j-simple和slf4j-log4j12是可選的。使用我們的日誌庫的項目用戶可以根據需要選擇要使用的日誌框架;

總之,Maven Optional依賴提供了一種靈活的方式來管理項目的依賴關係。通過將某些依賴項設置為可選,我們可以精簡依賴傳遞、避免依賴衝突,以及減少構建大小。此外,Optional依賴還可以幫助我們實現可插拔的功能和支持可選的擴展模塊,使我們的庫更加靈活和易於使用

4)依賴類型

在Maven中,type是用來指定依賴項的類型的屬性。它用於區分不同類型的依賴項,例如JAR文件、WAR文件、POM文件等。

type屬性對於Maven來說是很重要的,因為它可以告訴Maven如何處理這個依賴項。當你在pom.xml文件中聲明一個依賴項時,可以使用type屬性來顯式地指定該依賴項的類型。

常見的幾種依賴項類型包括:

  1. JAR(預設):表示依賴項是一個Java庫或模塊的JAR文件。
  2. WAR:表示依賴項是一個Web應用程式的WAR文件。
  3. POM:表示依賴項是一個Maven項目的POM文件。
  4. ZIP:表示依賴項是一個壓縮文件。
  5. EJB:表示依賴項是一個企業級JavaBean。
  6. DLL:表示依賴項是一個動態鏈接庫文件(適用於特定平臺)。

通過使用type屬性,你可以明確指定依賴項的類型,以便Maven在構建和部署過程中正確地處理它們。這有助於確保項目正確地引入和使用所需的依賴項,並且避免混淆和錯誤。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-dependencies</artifactId>
	<version>2.7.11</version>
	<type>pom</type>
</dependency>

6 繼承和聚合

在Maven中,繼承是一種機制,允許創建一個父項目(也稱為聚合項目)來共用和管理子項目的配置信息。通過繼承關係,子項目可以繼承和覆蓋父項目的設置,從而避免重覆配置。

實現繼承的方式是通過在子項目的pom.xml文件中使用標簽來指定父項目。例如:

<parent>
  <groupId>com.example</groupId>
  <artifactId>parent-project</artifactId>
  <version>1.0.0</version>
</parent>

父項目的坐標(groupId、artifactId和version)會被顯式地指定在子項目中, 子類項目就不用再設置groupId、artifactId;

在繼承關係中,子項目可以覆蓋或添加屬性、依賴、插件和插件配置等。通過在子項目中聲明相同的元素,子項目可以覆蓋父項目中相應元素的值或配置。

在繼承關係中,通常會將各個理, 那麼所有的子類項目在按需使用這些依賴時, 就不需要再指定版本, 這樣可以避免各個依賴之間的版本衝突等, 也簡化了很多代碼;

繼承關係可以幫助簡化項目的配置和管理。當有多個項目共用相同的配置或依賴關係時,可以將這些設置提取到父項目中,以減少冗餘和重覆的配置。

|

在進行依賴的版本管理時, 使用標簽統一設置依賴的版本號, 然後使用將依賴的版本信息傳遞給子類項目;

  1. 創建父類(聚合項目)

​ 就是創建普通的maven項目, 然後設置pom.xml文件中的 pom, 然後刪除掉src文件夾;

​ 在父類項目的pom.xml文件中加入依賴的版本管理信息;

 	 <properties>
		<maven.compiler.source>8</maven.compiler.source>
		<maven.compiler.target>8</maven.compiler.target>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!--  所有依賴的版本 -->
		<spring-version>5.3.3</spring-version>
		<mybatis-version>3.5.6</mybatis-version>
		<mybatis-spring-version>2.0.5</mybatis-spring-version>
		<jackson-version>2.11.2</jackson-version>
		<mysql-version>8.0.20</mysql-version>
		<druid-version>1.1.20</druid-version>
		<hibernate-validator-version>6.0.20.Final</hibernate-validator-version>
		<validation-api-version>2.0.1.Final</validation-api-version>
		<commons-io-version>1.3.2</commons-io-version>
		<commons-fileupload-version>1.3.2</commons-fileupload-version>
		<pagehelper-version>5.2.0</pagehelper-version>
	</properties>
	
	<dependencyManagement>
		<dependencies>
			<!-- 上傳-->
			<dependency>
				<groupId>commons-fileupload</groupId>
				<artifactId>commons-fileupload</artifactId>
				<version>${commons-fileupload-version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-io</artifactId>
				<version>${commons-io-version}</version>
			</dependency>
			<!-- 數據校驗 -->
			<dependency>
				<groupId>javax.validation</groupId>
				<artifactId>validation-api</artifactId>
				<version>${validation-api-version}</version>
			</dependency>
			<dependency>
				<groupId>org.hibernate.validator</groupId>
				<artifactId>hibernate-validator</artifactId>
				<version>${hibernate-validator-version}</version>
			</dependency>
			<!--分頁-->
			<dependency>
				<groupId>com.github.pagehelper</groupId>
				<artifactId>pagehelper</artifactId>
				<version>${pagehelper-version}</version>
			</dependency>
			<!--連接池-->
			<dependency>
				<groupId>com.alibaba</groupId>
				<artifactId>druid</artifactId>
				<version>${druid-version}</version>
			</dependency>
			<dependency>
				<groupId>mysql</groupId>
				<artifactId>mysql-connector-java</artifactId>
				<version>${mysql-version}</version>
			</dependency>
			<!--json-->
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-annotations</artifactId>
				<version>${jackson-version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-databind</artifactId>
				<version>${jackson-version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-core</artifactId>
				<version>${jackson-version}</version>
			</dependency>
			<!--mybatis-->
			<dependency>
				<groupId>org.mybatis</groupId>
				<artifactId>mybatis-spring</artifactId>
				<version>${mybatis-spring-version}</version>
			</dependency>
			<dependency>
				<groupId>org.mybatis</groupId>
				<artifactId>mybatis</artifactId>
				<version>${mybatis-version}</version>
			</dependency>
			<!--spring-->
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-jdbc</artifactId>
				<version>${spring-version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-webmvc</artifactId>
				<version>${spring-version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

2)創建子類項目

image

按照上圖分別創建ssm-common, ssm-dao,ssm-pojo,ssm-service,ssm-web等5個子類項目;

image

ssm-web的pom.xml

依賴ssm-service項目, ssm-service項目的依賴也會傳遞到ssm-web中;

<parent>
	<groupId>cn.guotu</groupId>
	<artifactId>ssm-parent</artifactId>
	<version>1.0-SNAPSHOT</version>
</parent>

<dependencies>
	<dependency>
		<groupId>cn.guotu</groupId>
		<artifactId>ssm-service</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>
</dependencies>

ssm-service的pom.xml
添加的spring-webmvc依賴無需設置版本號;

<dependencies>
		<dependency>
			<groupId>cn.guotu</groupId>
			<artifactId>ssm-dao</artifactId>
			<version>1.0-SNAPSHOT</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
		</dependency>
</dependencies>

所有的配置文件都放在web項目中:

image

3)編寫完成各個子類項目後, 部署web項目到tomcat運行;

7 私服


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在做Android自動化時候,我們需要知道視圖有哪些元素,元素都有哪些屬性,獲取到屬性我們才能獲取到元素從而做自動化控制,所以做Android自動化獲取元素屬性是必要的第一步 獲取視圖元素屬性最便捷的方式就是使用Android SDK中的 uiautomatorviewer,當你配置好Android... ...
  • setup概述 setup是Vue3中新的配置項,值是一個函數,組件中所用到的數據、方法、計算屬性、監視等等,均配置在setup中。 setup函數返回的對象中的內容,可直接在模版中使用。 setup中不能使用this關鍵字,this是undefined。 setup會在beforeCreate() ...
  • ‍ 寫在開頭 點贊 + 收藏 學會 一、忘了最基礎的東西 前端開發的核心構建在三大基石技術上:HTML、CSS和JavaScript。回想起多年前,前端開發者常被戲稱為“切圖仔”,但就是這樣的角色,通過精湛的CSS技巧,能夠實現各種複雜的交互和特效,展現出前所未有的網頁魔法。這是 ...
  • json-server 快速搭建REST API 伺服器 ★ 認識json-server 官方文檔參考 json-server 是一個非常流行的開源工具,用於快速搭建一個完整的 REST API 伺服器。它使用 JSON 文件作為數據源,通過簡單的配置即可模擬複雜的伺服器功能,非常適合前端開發者在沒 ...
  • 這篇文章介紹瞭如何在Vue 3項目中配置ESLint和Prettier以統一代碼風格,實現代碼規範性與可讀性的提升。通過設置規則、解決衝突、以及將配置融入持續集成流程和代碼審查過程,確保團隊協作時代碼風格的一致性,提升開發效率與項目維護性。 ...
  • 基於Vue-Cli創建 現在官方推薦使用 create-vue 來創建基於 Vite 的新項目(⚠️ Vue CLI 現已處於維護模式!) # 查看@vue/cli版本號,確保@vue/cli版本在4.5.0以上 vue --version # 沒有安裝@vue/cil或者版本不在4.5.0以上執行 ...
  • 寫在前面 這是PB案例學習筆記系列文章的第5篇,該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習,提高編程技巧,以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼,小凡都上傳到了gitee代碼倉庫https://gitee.com/xiezhr/pb-proje ...
  • Cursor 是一個基於 Visual Studio Code(VS Code)技術構建的高級代碼編輯器,專為提高編程效率並更深度地整合 AI 功能而設計。它不僅繼承了 VS Code 的強大功能和用戶界面,還增加了專門針對 AI 支持的特色功能。Cursor 是 VS Code 的一個分支,這意味... ...
一周排行
    -Advertisement-
    Play Games
  • 通過WPF的按鈕、文本輸入框實現了一個簡單的SpinBox數字輸入用戶組件並可以通過數據綁定數值和步長。本文中介紹了通過Xaml代碼實現自定義組件的佈局,依賴屬性的定義和使用等知識點。 ...
  • 以前,我看到一個朋友在對一個系統做初始化的時候,通過一組魔幻般的按鍵,調出來一個隱藏的系統設置界面,這個界面在常規的菜單或者工具欄是看不到的,因為它是一個後臺設置的關鍵界面,不公開,同時避免常規用戶的誤操作,它是作為一個超級管理員的入口功能,這個是很不錯的思路。其實Winform做這樣的處理也是很容... ...
  • 一:背景 1. 講故事 前些天有位朋友找到我,說他的程式每次關閉時就會自動崩潰,一直找不到原因讓我幫忙看一下怎麼回事,這位朋友應該是第二次找我了,分析了下 dump 還是挺經典的,拿出來給大家分享一下吧。 二:WinDbg 分析 1. 為什麼會崩潰 找崩潰原因比較簡單,用 !analyze -v 命 ...
  • 在一些報表模塊中,需要我們根據用戶操作的名稱,來動態根據人員姓名,更新報表的簽名圖片,也就是電子手寫簽名效果,本篇隨筆介紹一下使用FastReport報表動態更新人員簽名圖片。 ...
  • 最新內容優先發佈於個人博客:小虎技術分享站,隨後逐步搬運到博客園。 創作不易,如果覺得有用請在Github上為博主點亮一顆小星星吧! 博主開始學習編程於11年前,年少時還只會使用cin 和cout ,給單片機點點燈。那時候,類似async/await 和future/promise 模型的認知還不是 ...
  • 之前在阿裡雲ECS 99元/年的活動實例上搭建了一個測試用的MINIO服務,以前都是直接當基礎設施來使用的,這次準備自己學一下S3相容API相關的對象存儲開發,因此有了這個小工具。目前僅包含上傳功能,後續計劃開發一個類似圖床的對象存儲應用。 ...
  • 目錄簡介快速入門安裝 NuGet 包實體類User資料庫類DbFactory增刪改查InsertSelectUpdateDelete總結 簡介 NPoco 是 PetaPoco 的一個分支,具有一些額外的功能,截至現在 github 星數 839。NPoco 中文資料沒多少,我是被博客園群友推薦的, ...
  • 前言 前面使用 Admin.Core 的代碼生成器生成了通用代碼生成器的基礎模塊 分組,模板,項目,項目模型,項目欄位的基礎功能,本篇繼續完善,實現最核心的模板生成功能,並提供生成預覽及代碼文件壓縮下載 準備 首先清楚幾個模塊的關係,如何使用,簡單畫一個流程圖 前面完成了基礎的模板組,模板管理,項目 ...
  • 假設需要實現一個圖標和文本結合的按鈕 ,普通做法是 直接重寫該按鈕的模板; 如果想作為通用的呢? 兩種做法: 附加屬性 自定義控制項 推薦使用附加屬性的形式 第一種:附加屬性 創建Button的附加屬性 ButtonExtensions 1 public static class ButtonExte ...
  • 在C#中,委托是一種引用類型的數據類型,允許我們封裝方法的引用。通過使用委托,我們可以將方法作為參數傳遞給其他方法,或者將多個方法組合在一起,從而實現更靈活的編程模式。委托類似於函數指針,但提供了類型安全和垃圾回收等現代語言特性。 基本概念 定義委托 定義委托需要指定它所代表的方法的原型,包括返回類 ...