2013-05-02 32 views
44

Tôi có máy chủ tomcat đang hoạt động và tôi có thư mục webapp my_web_app.Tạo tệp chiến tranh từ thư mục webcat tomcat

Tôi không triển khai dự án; Tôi chỉ có thư mục của ứng dụng đó (như TOMCAT_DIR/webapps/my_web_app).

Điều tôi cần là tệp WAR. Làm cách nào để tạo tệp .war từ ứng dụng web này?

Trả lời

105

Bạn có thể tạo tệp .war trở lại từ thư mục hiện có của mình.

Sử dụng lệnh này

cd /to/your/folder/location 
jar -cvf my_web_app.war * 
+0

Thư viện mà dự án sử dụng nằm trong thư mục lib của Tomcar thì sao? Họ có cần phải được đặt bên trong tập tin chiến tranh không? Tệp chiến tranh đó có hoạt động trong một thùng chứa servlet khác như JBoss không? –

+0

@ketan Lệnh này có yêu cầu bất kỳ tệp đầu vào hoặc tệp kê khai nào vì tôi gặp lỗi (nói rằng lệnh yêu cầu tệp đầu vào hoặc tệp kê khai) khi tôi thực hiện theo các bước của bạn? Bạn có thể giúp tôi? Ngoài ra FYI, tôi duyệt cho các lỗi tôi nhận được nhưng nó (http://stackoverflow.com/questions/23422470/getting-error-while-creating-war-file) dường như không giúp đỡ. –

+0

Tôi đã sử dụng tính năng này để tạo tệp chiến tranh từ kết quả của webpack và tomcat thích nó. – jkerak

22

của nó giống như việc tạo ra một tập tin WAR của dự án của bạn, bạn có thể làm điều đó bằng nhiều cách (từ Eclipse, dòng lệnh, maven).

Nếu bạn muốn làm từ dòng lệnh, lệnh là

jar -cvf my_web_app.war * 

Có nghĩa là, "nén tất cả mọi thứ trong thư mục này vào một file có tên my_web_app.war" (c = tạo, v = verbose, f = file)

+0

Giống như giải thích về 3 lá cờ (Tôi chưa từng thấy điều này ở bất kỳ nơi nào khác.) –

4

Có một cách để tạo tập tin chiến tranh của dự án của bạn từ nhật thực.

Lần đầu tiên một tạo một file xml với đoạn mã sau,

Thay HistoryCheck với tên dự án của bạn.

<?xml version="1.0" encoding="UTF-8"?> 
<project name="HistoryCheck" basedir="." default="default"> 
    <target name="default" depends="buildwar,deploy"></target> 
    <target name="buildwar"> 
     <war basedir="war" destfile="HistoryCheck.war" webxml="war/WEB-INF/web.xml"> 
      <exclude name="WEB-INF/**" /> 
      <webinf dir="war/WEB-INF/"> 
       <include name="**/*.jar" /> 
      </webinf> 
     </war> 
    </target> 
    <target name="deploy"> 
     <copy file="HistoryCheck.war" todir="." /> 
    </target> 
</project> 

Bây giờ, Trong nhà thám hiểm dự án nhấp chuột phải vào đó xml tập tin và Run như-> ant build

Bạn có thể xem tập tin chiến tranh của dự án của bạn trong thư mục dự án của bạn.

+0

Nhận lỗi này ... Mục tiêu xây dựng không tồn tại trong dự án ". Nó được sử dụng từ mục tiêu mặc định. –

1

Tạo tệp chiến tranh trong một thư mục khác với vị trí của nội dung nếu không lệnh jar có thể cố gắng nén tệp mà nó đang tạo.

#!/bin/bash 

set -euo pipefail 

war=app.war 
src=contents 

# Clean last war build 
if [ -e ${war} ]; then 
    echo "Removing old war ${war}" 
    rm -rf ${war} 
fi 

# Build war 
if [ -d ${src} ]; then 
    echo "Found source at ${src}" 
    cd ${src} 
    jar -cvf ../${war} * 
    cd .. 
fi 

# Show war details 
ls -la ${war} 
Các vấn đề liên quan