لوگو عباس اویسی

متولد تهران، توسعه دهنده‌ی اندروید، پیگیر فوتبال. ارشد نرم افزار و علاقمند به جنبه‌های مختلف توسعه‌ی نرم افزار

  • عمومی
  • اندروید
  • جنریتور حلما
  • فریم‌ورک dagger
  • وب‌سرویس آموزشی فیلم‌ها

آموزش ساخت پروژه‌ی جاوا با Maven

مرداد ۷, ۱۳۹۶

گاهی پیش میاد به عنوان برنامه‌نویس اندروید نیاز میشه که یک کتابخونه‌ی جاوا رو تست کنید. مثلا فکرکنید میخواید ویژگی خاصی رو توی dagger2 یا retrofit امتحان کنید اما تا بخواید پروژه اندروید بسازید و هر بار منتظر بشید تا build بشه! خیلی وقتتون گرفته میشه.

در این موارد ساختن یه پروژه‌ی console application جاوا میتونه خیلی کمک کنه. اینجوری درگیر lifecycle اکتیویتی یا درست کردن فایل xml و … هم نمیشید و می‌تونید تمرکزتون رو روی اون موضوعی که میخواید تست کنید بذارید. فقط اگر پروژه‌ی معمولی جاوا بسازید باید خودتون فایل‌ jar کتابخونه‌هایی که نیاز دارید رو پیدا کنید و چیزی مثل gradle توی اندروید نیست تا کمکتون بکنه. برای حل این مشکل میشه از maven استفاده کرد، بهش dependecyهاتون رو شبیه gradle در یک فایل ‍xml معرفی میکنید و بقیه کار رو به اون میسپرید. بعدش میتونید خیلی راحت از کتابخونه‌ها توی کدتون استفاده کنید.

تا حالا چند سری سرچ کردم و آموزش ساخت پروژه‌ با maven رو خوندم اما دفعه‌ی بعدی باز یادم میرفت! این بار تصمیم گرفتم کامل اینجا داکیومنتش کنم تا اگر کسی نیاز داشت یا خودم خواستم بتونم خیلی راحت‌ اینکارو بکنم.

———————————————————————

توجه: با استفاده از این لینک میتونید maven رو دانلود و نصب کنید.

۱- برای ساخت پروژه میشه از Intelij Idea استفاده کرد. در پنجره new project روی maven کلیک کنید و اطلاعاتی که در هر مرحله میخواد رو بهش بدید تا در نهایت با کلیک روی finish پروژه ساخته بشه.

 

۲- توی مسیر /src/main/java یک کلاس جاوا به اسم Main بسازید.

Java
1
2
3
4
5
6
7
public class Main {
 
    public static void main(String[] argv)  {
    
    }
 
}

 

۳- توی تنظیمات Intelij Idea به مسیر زیر برید و اگر Import Maven projects automatically تیک نداشت، تیکشو بزنید. (اگر اینکارو نکنید وقتی بعدا dependencyهارو به pom.xml اضافه میکنید، درست import نمیشند)

Project Settings | Maven | Importing | Import Maven projects automatically ▶

 

۴- حالا نوبت ‌فایل pom.xml هست، این فایل رو باز کنید. برای درست کردن jar نیاز به پلاگین maven-assembly-plugin هست و باید توی pom بذاریدش.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <archive>
            <manifest>
                <mainClass>Main</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

اگر اسم کلاسی که توی مرحله ۲ ساختید Main نیست، حواستون باشه داخل تگ mainClass اسم اون رو بذارید (اگر کلاس داخل پکیج هست، پکیج رو هم قبل اسم کلاس بنویسید)

 

۵- اگر نیاز به dependency خاصی دارید باید توی تگ dependencies بنویسید، بطور مثال چون من میخوام از retrofit استفاده کنم و به dependencyهای زیر نیاز دارم.

Java
1
2
3
4
5
6
7
8
9
10
<dependency>
    <groupId>com.squareup.retrofit2</groupId>
    <artifactId>retrofit</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>com.squareup.retrofit2</groupId>
    <artifactId>converter-gson</artifactId>
    <version>2.3.0</version>
</dependency>

در نهایت کل فایل pom.xml شبیه این لینک میشه.

 

۶- بعد اضافه کردن dependencyها توی فایل pom میتونید ازشون در کدتون استفاده کنید. من داخل کلاس Main کد زیر رو نوشتم.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Main {
 
    public interface MoviesApi {
        @GET("api/v1/movies/{id}")
        Call<Movie> getMovieById(@Path("id") int movie_id);
    }
 
 
    public static void main(String[] argv) throws IOException {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://moviesapi.ir/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
 
        MoviesApi service = retrofit.create(MoviesApi.class);
 
 
        Call<Movie> movie=service.getMovieById(1);
 
        Response<Movie> m=movie.execute();
        System.out.println(m.body().title);
    }
}

 

۷- الان تنظیمات و کد‌های پروژه کامل شده و میتونید از دو روش مختلف اجراش کنید.

روش اول) با استفاده از دو دستور زیر در command line میشه پروژه رو build و اجرا کنید. البته دستور mvn package رو باید توی فولدر اصلی پروژه و جایی که pom.xml هست بزنید.

Java
1
2
mvn package
java -jar target/dagger-1.0-SNAPSHOT-jar-with-dependencies.jar

روش دوم) با ساختن یک Run برای Intelij Idea میتونید با کلیک روی دکمه‌ی run پروژتون رو بیلد و اجرا کنید. حتی میتونید در زمان debug از break point هم استفاده کنید. مراحل زیر رو برای ساخت Run باید انجام بدید.

A- توی Intelij Idea اون بالا روی Edit Configurations کلیک کنید.

2

B- توی پنجره‌ای که باز شده روی + کلیک کنید و بعد maven رو انتخاب کنید.

C- در قسمت جدید که باز میشه، ما فقط به تب اول parameter کار داریم. در قسمت working directory مسیر پروژه رو بنویسید. در قسمت command line کد زیر رو بنویسید ( اگر در مرحله‌ی ۲ اسم کلاستون رو چیزی غیر از Main گذاشتید، حواستون باشه در کد زیر اسم کلاس خودتون رو جای Main بذارید)

Java
1
exec:java -Dexec.mainClass=Main -Dexec.args=args

D- اون پایین در قسمت before launch روی + کلیک کنید و Run Maven Goal رو انتخاب کنید. دوباره داخل working directory مسیر پروژه رو بنویسید و در قسمت command line دستور زیر رو کپی کنید.

Java
1
assembly:assembly

E- حالا دیگه Ok کنید و Run شما ساخته شده. وقتی رو دکمه‌ی Run کلیک کنید، خود Intelij Idea به ترتیب همه کارهارو میکنه و برنامه‌ی شما اجرا میشه.