போர் மற்றும் ஜார் கோப்புகளுக்கு இடையிலான வேறுபாடுகள்

உண்மையில் , ஜார் லைப்ரரி என்பது ஒரு ஜிப் காப்பகமாகும், இது அதன் பெயரிலிருந்து நேரடியாகப் பின்தொடர்கிறது: ஜாவா காப்பகம் . பெரும்பாலும் இது நான்கு விஷயங்களைக் கொண்டுள்ளது:

  • தொகுக்கப்பட்ட வகுப்புகள்;
  • ஆதாரங்கள்: பண்புகள் கோப்புகள் மற்றும் பல;
  • வெளிப்படையான MANIFEST.MF;
  • மற்ற ஜாடி நூலகங்கள் (அரிதாக).

அத்தகைய காப்பகத்தின் பொதுவான அமைப்பு இதுபோல் தெரிகிறது:

  META-INF/
  	MANIFEST.MF
  com/
  	codegym/
	      MyApplication.class
  application.properties

இப்போது ஒரு பொதுவான போர் கோப்பைப் பார்ப்போம். சொல்லப்போனால், போர் என்பது போர் என்ற வார்த்தையிலிருந்து அல்ல, W eb Ar chive என்பதிலிருந்து வந்தது . போர்க் கோப்பின் அமைப்பு பொதுவாக மிகவும் சிக்கலானது. பெரும்பாலும் இது இரண்டு பகுதிகளைக் கொண்டுள்ளது:

  • ஜாவா பகுதி
    • தொகுக்கப்பட்ட வகுப்புகள்
    • ஜாவா வகுப்புகளுக்கான ஆதாரங்கள்: பண்புகள் கோப்புகள் மற்றும் பல
    • மற்ற ஜாடி நூலகங்கள் (பெரும்பாலும்)
    • வெளிப்படையான MANIFEST.MF
  • வலை பகுதி
    • web-xml - இணைய சேவை வரிசைப்படுத்தல் விளக்கி
    • jsp servlets
    • நிலையான வலை ஆதாரங்கள்: HTML, CSS, JS கோப்புகள்

ஒரு பொதுவான போர் கோப்பின் எடுத்துக்காட்டு:

META-INF/
    MANIFEST.MF
WEB-INF/
    web.xml
    jsp/
    	helloWorld.jsp
    classes/
    	static/
    	templates/
    	application.properties
    lib/
    	// *.jar files as libs

முக்கியமான! jar கோப்பை ஒரு ஜாவா இயந்திரத்தால் இயக்க முடியும், ஆனால் போர் கோப்பை இயக்க, அது ஒரு இணைய சேவையகத்தில் பதிவேற்றப்பட வேண்டும். அது தானே தொடங்குவதில்லை.

maven-war-plugin உடன் போர் கோப்பு சொருகி

எங்களிடம் ஒரு எளிய வலைத் திட்டம் உள்ளது என்று கற்பனை செய்து கொள்வோம். திட்டத்திற்கு அத்தகைய கோப்பு அமைப்பு கொடுக்கப்பட்டிருக்கட்டும், அதை எப்படி அசெம்பிள் செய்வது?

|-- pom.xml
 `-- src
 	`-- main
     	|-- java
     	|   `-- com
     	|   	`-- example
     	|       	`-- projects
     	|           	`-- SampleAction.java
     	|-- resources
     	|   `-- images
     	|   	`-- sampleimage.jpg
     	`-- webapp
         	|-- WEB-INF
         	|   `-- web.xml
         	|-- index.jsp
         	`-- jsp
             	`-- websource.jsp

முதலில், இதையெல்லாம் போர்க் கோப்பாக உருவாக்க மேவனிடம் சொல்ல வேண்டும் , இதற்கு ஒரு <package> டேக் உள்ளது , எடுத்துக்காட்டாக:

	<project>
  	...
      <groupId>com.example.projects</groupId>
      <artifactId>simple-war</artifactId>
  	<packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
  	<name>Simple War Project</name>
      <url>http://codegym.cc</url>
  	...
    </project>

இரண்டாவதாக, நாம் maven-war-plugin செருகுநிரலைச் சேர்க்க வேண்டும் . உதாரணமாக:

  <build>
	<plugins>
  	<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
    	<version>3.3.2</version>
    	<configuration>
          <webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory>
    	</configuration>
      </plugin>
    </plugins>
  </build>

எதிர்காலத்தில் கட்டமைக்கக்கூடிய ஒரு செருகுநிரலை இங்கே வரையறுக்கிறோம். மேலும், webappDirectory குறிச்சொல்லைப் பயன்படுத்தி , திட்டம் பயன்படுத்தப்படும் கோப்பகத்தை மறுவரையறை செய்கிறோம். இப்போது நான் பேசுவதைப் பற்றி மேலும் கூறுவேன்.

செருகுநிரலை இரண்டு உருவாக்க முறைகளுக்கு அமைக்கலாம் (இரண்டு வகையான இலக்கு):

  • போர்: போர்
  • போர்: வெடித்தது

முதல் வழக்கில், விளைவான போர் கோப்பு இலக்கு கோப்புறையில் வைக்கப்பட்டு <artifactId>-<version>.war .

ஆனால் நீங்கள் செருகுநிரலை "கேட்க" முடியும், இதனால் போர் கோப்பின் உள்ளடக்கங்கள் இறுதி கோப்புறையில் வைக்கப்படும், அதில் உள்ள இணைய சேவையகத்தால் அது திறக்கப்படும். இதற்கு, கோல் வார்: வெடித்தது பயன்படுத்தப்படுகிறது .

நீங்கள் Intellij IDEA இலிருந்து நேரடியாக ஒரு திட்டத்தை இயக்கினால் அல்லது பிழைத்திருத்தம் செய்தால் இரண்டாவது அணுகுமுறை பெரும்பாலும் பயன்படுத்தப்படுகிறது.

மேலே உள்ள எடுத்துக்காட்டில் உள்ள webappDirectory குறிச்சொல் போர்:வெடித்த பயன்முறையில் உருவாக்கும்போது உங்கள் போர் கோப்பு திறக்கப்படும் கோப்பகத்தை மறுவரையறை செய்ய உங்களை அனுமதிக்கிறது.

அதன் அதிகாரப்பூர்வ பக்கத்திலிருந்து பிற செருகுநிரல் அமைப்புகளைப் பற்றி அறியலாம் .

SpringBoot அடிப்படையில் ஒரு இணைய பயன்பாட்டை உருவாக்குதல்

சரி, நான் சில உண்மையான சட்டசபை உதாரணத்தை பிரிக்க விரும்புகிறேன். நாம் அற்ப விஷயங்களாக இருக்க வேண்டாம் மற்றும் SpringBoot அடிப்படையிலான ஒரு எடுத்துக்காட்டு பயன்பாட்டைப் பயன்படுத்தி இதைக் கருத்தில் கொள்வோம்.

முதல் படி. IDEA உடன் வெற்று மேவன் வலைத் திட்டத்தை உருவாக்கவும்.

படி இரண்டு. அதன் pom.xml இல் வசந்த சார்புகளைச் சேர்க்கவும்.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

படி மூன்று. com.codegym.spring.MainController வகுப்பை உருவாக்கவும் . இது src/main/java கோப்புறையில் வைக்கப்பட வேண்டும் :

@Controller
public class MainController {

	@GetMapping("/")
    public String viewIndexPage(Model model) {
        model.addAttribute("header", "Maven Generate War");
    	return "index";
	}
}

இங்கு 3 விஷயங்கள் விவரிக்கப்பட்டுள்ளன. முதலில், @கண்ட்ரோலர் சிறுகுறிப்பு ஸ்பிரிங்பூட் கட்டமைப்பிற்கு உள்வரும் வலை கோரிக்கைகளை வழங்க இந்த வகுப்பு பயன்படுத்தப்படும் என்று கூறுகிறது.

இரண்டாவதாக, @GetMapping சிறுகுறிப்பு , ரூட் URI - / இல் GET கோரிக்கையை வழங்க எங்கள் முறை அழைக்கப்படும் என்பதைக் குறிக்கிறது.

மூன்றாவதாக, முறை "குறியீட்டு" சரத்தை வழங்குகிறது . இது SpringBoot கட்டமைப்பிற்கு index.html கோப்பின் உள்ளடக்கங்களை மறுமொழியாக திருப்பி அனுப்புகிறது .

படி நான்கு. பின்வரும் உள்ளடக்கத்துடன் திட்டப்பணியில் index.html கோப்பைச் சேர்க்க வேண்டும்:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
    <!-- Bootstrap core CSS -->
    <link th:href="@{/css/bootstrap.min.css}" rel="stylesheet">
</head>
<body>
    <nav class="navbar navbar-light bg-light">
    	<div class="container-fluid">
        	<a class="navbar-brand" href="#">
            	CodeGym Tutorial
        	</a>
    	</div>
    </nav>
    <div class="container">
    	<h1>[[${header}]]</h1>
    </div>
</body>
</html>

இது html மட்டுமல்ல. அதன் உள்ளடக்கம் வாடிக்கையாளருக்கு வழங்கப்படுவதற்கு முன், அது தைம்லீஃப் கட்டமைப்பின் மூலம் சேவையகத்தில் மாற்றியமைக்கப்படும் . இந்த கோப்பில் சிறப்பு குறிச்சொற்கள் உட்பொதிக்கப்பட்டுள்ளன, இது Thymeleaf நூலகத்தை பக்கத்தின் உள்ளடக்கத்தை செயலாக்க மற்றும் மாற்ற அனுமதிக்கிறது.

சிவப்பு நிறத்தில் உள்ள குறிச்சொற்கள் தைம்லீஃப் நூலகத்தால் செயலாக்கப்படும் குறிச்சொற்கள், பச்சை நிறத்தில் உள்ளவை பூட்ஸ்டார்ப் CSS நூலகத்தின் பாணிகள்.

படி ஐந்து. pom.xml இல் செருகுநிரலை அமைக்கவும்:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.3.1</version>
</plugin>

நான் என் பலத்தை சற்று அதிகமாக மதிப்பிட்டேன். ஒரு எளிய உதாரணத்தை முழுமையாக அலசுவதற்கு நிறைய நேரம் எடுக்கும். ஆனால் நீங்கள் திட்டத்தின் முழு குறியீட்டையும் GitHub இலிருந்து பதிவிறக்கம் செய்து அதை நீங்களே புரிந்து கொள்ள முயற்சி செய்யலாம். உங்கள் வேலை நேரத்தில் 80% நீங்கள் அதைச் செய்வீர்கள் :)

GitHub இல் உள்ள இணைப்பிலிருந்து முழு குறியீட்டையும் பதிவிறக்கம் செய்யலாம் .