我想为一个Play scala项目添加一些命令到RPM包(使用sbt-native-packager构建)。例如:
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
public class Menu extends BasicGameState {
private int ID = 1;
@Override
public void init(GameContainer arg0, StateBasedGame arg1) throws SlickException {
}
@Override
public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException {
g.setColor(Color.white);
g.drawString("Higher or Lower", 50, 10);
g.drawString("1. Play Game", 50, 100);
g.drawString("2. High Scores", 50, 120);
g.drawString("3. Quit", 50, 140);
}
@Override
public void update(GameContainer arg0, StateBasedGame arg1, int arg2) throws SlickException {
}
@Override
public int getID() {
return ID;
}
}
以便在通过yum安装RPM软件包时执行它们。
我在一个标准的sbt项目中看到,看起来我们可以使用自定义模板:
mkdir -p /opt/myapp
chmod +w /opt/myapp
但是在Play项目中,我们有以下文件夹:
src/templates/start
我们根本没有app
conf
project
dist
文件夹。
我想知道如何添加自定义命令,这些命令可以在为Play项目安装RPM之前或之后运行。
答案 0 :(得分:1)
我还没有使用sbt-native-packager的这个功能,但我知道RPM spec文件支持定义在特定事件中运行的脚本(例如%pre - 在安装之前运行)。
看起来sbt-native-package通过覆盖maintainerScripts
来支持这一点:
// overriding
import RpmConstants._
maintainerScripts in Rpm := Map(
Pre -> Seq("""echo "pre-install""""),
Post -> Seq("""echo "post-install""""),
Pretrans -> Seq("""echo "pretrans""""),
Posttrans -> Seq("""echo "posttrans""""),
Preun -> Seq("""echo "pre-uninstall""""),
Postun -> Seq("""echo "post-uninstall"""")
)
请注意,这仅适用于sbt-native-package 1.1.0+。
中详述了其他几种方法