【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
Play的命令是借助python脚本,这从下载的play包就能明显看出来:一是其中有一个python包,里面是一个play自带的python环境,还有是play.bat文件:
@echo off
"%~dp0python\python.exe" "%~dp0play" %*
使用python运行play文件,而play文件里就是python代码。也就是我们平时用的play命令全作用于其中。用python来操作java项目管理是比较好的方法,我参与的两个大项目都是如此。
我们一起来看看python是如何操控java滴。 play文件中引入了commandLoader/application/utils等文件,他们位于/framework/pym下:
from play.cmdloader import CommandLoader
from play.application import PlayApplication
from play.utils import *
首先看看commandLoader,其主要作用是加载command文件下所有模块、命令等。
在command文件夹中包含了在命令行中使用的所有命令,如:eclipse.py中,就是包含了eclipsify与ec,后者是前者的简化。对play项目进行了导入优化。其他如intellij.py/netbeans.py/ant.py三个文件都如此。
import os, os.path
import shutil
import time
from play.utils import *
COMMANDS = ['eclipsify', 'ec']
HELP = {
'eclipsify': 'Create all Eclipse configuration files'
}
def execute(**kargs):
...
这里重要是daemon.py与base.py。 daemon.py中含有start/stop/restart三个关于应用开关的命令。在自己的项目中我们也可以借鉴他的实现方法。
COMMANDS = ['start', 'stop', 'restart', 'pid', 'out']
HELP = {
'start': 'Start the application in the background',
'stop': 'Stop the running application',
'restart': 'Restart the running application',
'pid': 'Show the PID of the running application',
'out': 'Follow logs/system.out file'
}
base.py中含有 run/new/clean/test等命令。
COMMANDS = ['run', 'new', 'clean', 'test', 'autotest', 'auto-test', 'id', 'new,run', 'clean,run', 'modules']
HELP = {
'id': "Define the framework ID",
'new': "Create a new application",
'clean': "Delete temporary files (including the bytecode cache)",
'run': "Run the application in the current shell",
'test': "Run the application in test mode in the current shell",
'auto-test': "Automatically run all application tests",
'modules': "Display the computed modules list"
}
utils.py中是能用辅助模块,从名称就可以看出来。像获取java版本、play版本、将项目打包成war等。 appliction.py是应用辅助模块,包括对应用文件、模块的检查、添加jar包等方法。其中也包含python操作java的java_cmd方法。
一个play start demo 流程: cmd输入 -> play文件中 -> daemon.py -> appliction.py -> java
来源:oschina
链接:https://my.oschina.net/u/1386633/blog/498291