Skip to content

Commit b2abc58

Browse files
committed
A platform specific properties macConfig and winConfig
1 parent 312501a commit b2abc58

File tree

6 files changed

+213
-64
lines changed

6 files changed

+213
-64
lines changed

src/main/java/io/github/fvarrui/javapackager/PackageMojo.java

Lines changed: 74 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
import org.twdata.maven.mojoexecutor.MojoExecutor.Element;
3636
import org.twdata.maven.mojoexecutor.MojoExecutor.ExecutionEnvironment;
3737

38+
import io.github.fvarrui.javapackager.model.MacConfig;
39+
import io.github.fvarrui.javapackager.model.Platform;
40+
import io.github.fvarrui.javapackager.model.WinConfig;
3841
import io.github.fvarrui.javapackager.utils.CommandUtils;
3942
import io.github.fvarrui.javapackager.utils.FileUtils;
4043
import io.github.fvarrui.javapackager.utils.IconUtils;
@@ -43,6 +46,7 @@
4346
import io.github.fvarrui.javapackager.utils.VelocityUtils;
4447

4548
import static org.apache.commons.lang3.StringUtils.defaultIfBlank;
49+
import static io.github.fvarrui.javapackager.utils.NumberUtils.defaultIfNull;
4650

4751
@Mojo(name = "package", defaultPhase = LifecyclePhase.PACKAGE, requiresDependencyResolution = ResolutionScope.RUNTIME)
4852
public class PackageMojo extends AbstractMojo {
@@ -238,10 +242,23 @@ public class PackageMojo extends AbstractMojo {
238242
private String jreDirectoryName;
239243

240244
/**
241-
* Launch4j version info
245+
* Mac OS X specific config
246+
*/
247+
@Parameter(property = "macConfig", required = false)
248+
private MacConfig macConfig;
249+
250+
/**
251+
* Windows specific config
252+
*/
253+
@Parameter(property = "winConfig", required = false)
254+
private WinConfig winConfig;
255+
256+
/**
257+
* Old windows version information
258+
* @deprecated
242259
*/
243260
@Parameter(property = "versionInfo", required = false)
244-
private VersionInfo versionInfo;
261+
private WinConfig versionInfo;
245262

246263
/**
247264
* Bundles app in a tarball file
@@ -674,12 +691,14 @@ private void createWindowsApp() throws MojoExecutionException {
674691

675692
// test version info
676693

677-
if (versionInfo == null) {
678-
getLog().warn("Version info not specified. Using defaults.");
679-
versionInfo = new VersionInfo();
694+
if (winConfig == null) {
695+
if (versionInfo == null)
696+
winConfig = new WinConfig();
697+
else
698+
winConfig = versionInfo;
680699
}
681-
versionInfo.setDefaults(info);
682-
getLog().info(versionInfo.toString());
700+
winConfig.setDefaults(info);
701+
getLog().info(winConfig.toString());
683702

684703
// prepares launch4j plugin configuration
685704

@@ -698,18 +717,18 @@ private void createWindowsApp() throws MojoExecutionException {
698717
)
699718
);
700719
config.add(element("versionInfo",
701-
element("fileVersion", versionInfo.getFileVersion()),
702-
element("txtFileVersion", versionInfo.getTxtFileVersion()),
703-
element("productVersion", versionInfo.getProductVersion()),
704-
element("txtProductVersion", versionInfo.getTxtProductVersion()),
705-
element("copyright", versionInfo.getCopyright()),
706-
element("companyName", versionInfo.getCompanyName()),
707-
element("fileDescription", versionInfo.getFileDescription()),
708-
element("productName", versionInfo.getProductName()),
709-
element("internalName", versionInfo.getInternalName()),
710-
element("originalFilename", versionInfo.getOriginalFilename()),
711-
element("trademarks", versionInfo.getTrademarks()),
712-
element("language", versionInfo.getLanguage())
720+
element("fileVersion", winConfig.getFileVersion()),
721+
element("txtFileVersion", winConfig.getTxtFileVersion()),
722+
element("productVersion", winConfig.getProductVersion()),
723+
element("txtProductVersion", winConfig.getTxtProductVersion()),
724+
element("copyright", winConfig.getCopyright()),
725+
element("companyName", winConfig.getCompanyName()),
726+
element("fileDescription", winConfig.getFileDescription()),
727+
element("productName", winConfig.getProductName()),
728+
element("internalName", winConfig.getInternalName()),
729+
element("originalFilename", winConfig.getOriginalFilename()),
730+
element("trademarks", winConfig.getTrademarks()),
731+
element("language", winConfig.getLanguage())
713732
)
714733
);
715734

@@ -848,20 +867,36 @@ private void generateDmgImage() throws MojoExecutionException {
848867
if (!generateInstaller || hostPlatform != Platform.mac) return;
849868

850869
getLog().info("Generating DMG disk image file");
870+
871+
// mac config
851872

873+
if (macConfig == null) {
874+
macConfig = new MacConfig();
875+
}
876+
877+
int windowX = defaultIfNull(macConfig.getWindowX(), 10);
878+
int windowY = defaultIfNull(macConfig.getWindowY(), 60);
879+
int windowWidth = defaultIfNull(macConfig.getWindowWidth(), 540);
880+
int windowHeight = defaultIfNull(macConfig.getWindowHeight(), 360);
881+
int iconSize = defaultIfNull(macConfig.getIconSize(), 128);
882+
int textSize = defaultIfNull(macConfig.getIconSize(), 16);
883+
int fileX = defaultIfNull(macConfig.getIconX(), 52);
884+
int fileY = defaultIfNull(macConfig.getIconY(), 116);
885+
int appX = defaultIfNull(macConfig.getAppsLinkIconX(), 360);
886+
int appY = defaultIfNull(macConfig.getAppsLinkIconY(), 116);
887+
String volumeName = defaultIfBlank(macConfig.getVolumeName(), name);
888+
852889
// final dmg file
853890
File dmgFile = new File(outputDirectory, name + "_" + version + ".dmg");
854891

855892
// temp dmg file
856893
File tempDmgFile = new File(assetsFolder, name + "_" + version + ".dmg");
857894

858-
// volumen name
859-
String volumeName = name;
860-
861895
// mount dir
862896
File mountFolder = new File("/Volumes/" + volumeName);
863897

864898
// creates a symlink to Applications folder
899+
getLog().info("Creating Applications link");
865900
File targetFolder = new File("/Applications");
866901
File linkFile = new File(appFolder, "Applications");
867902
FileUtils.createSymlink(linkFile, targetFolder);
@@ -870,11 +905,15 @@ private void generateDmgImage() throws MojoExecutionException {
870905
getLog().info("Copying background image");
871906
File backgroundFolder = FileUtils.mkdir(appFolder, ".background");
872907
File backgroundFile = new File(backgroundFolder, "background.png");
873-
FileUtils.copyResourceToFile("/mac/background.png", backgroundFile);
874-
908+
if (macConfig.getBackgroundImage() != null)
909+
FileUtils.copyFileToFile(macConfig.getBackgroundImage(), backgroundFile);
910+
else
911+
FileUtils.copyResourceToFile("/mac/background.png", backgroundFile);
912+
875913
// copies volume icon
876914
getLog().info("Copying icon file: " + iconFile.getAbsolutePath());
877-
FileUtils.copyFileToFile(iconFile, new File(appFolder, ".VolumeIcon.icns"));
915+
File volumeIcon = (macConfig.getVolumeIcon() != null) ? macConfig.getVolumeIcon() : iconFile;
916+
FileUtils.copyFileToFile(volumeIcon, new File(appFolder, ".VolumeIcon.icns"));
878917

879918
// creates image
880919
getLog().info("Creating image: " + tempDmgFile.getAbsolutePath());
@@ -893,18 +932,18 @@ private void generateDmgImage() throws MojoExecutionException {
893932

894933
// rendering applescript
895934
Map<String, Object> params = new HashMap<>();
896-
params.put("windowX", 10);
897-
params.put("windowY", 60);
898-
params.put("windowWidth", 540);
899-
params.put("windowHeight", 360);
900-
params.put("iconSize", 128);
901-
params.put("textSize", 16);
935+
params.put("windowX", windowX);
936+
params.put("windowY", windowY);
937+
params.put("windowWidth", windowWidth);
938+
params.put("windowHeight", windowHeight);
939+
params.put("iconSize", iconSize);
940+
params.put("textSize", textSize);
902941
params.put("background", backgroundFile.getName());
903942
params.put("file", name + ".app");
904-
params.put("fileX", 52);
905-
params.put("fileY", 116);
906-
params.put("appX", 360);
907-
params.put("appY", 116);
943+
params.put("fileX", fileX);
944+
params.put("fileY", fileY);
945+
params.put("appX", appX);
946+
params.put("appY", appY);
908947
File applescript = new File(assetsFolder, "customize-dmg.applescript");
909948
getLog().info("Rendering applescript: " + applescript.getAbsolutePath());
910949
VelocityUtils.render("/mac/customize-dmg.applescript.vtl", applescript, params);
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
package io.github.fvarrui.javapackager.model;
2+
3+
import java.io.File;
4+
5+
public class MacConfig {
6+
7+
private File backgroundImage;
8+
private Integer windowWidth;
9+
private Integer windowHeight;
10+
private Integer windowX;
11+
private Integer windowY;
12+
private Integer iconSize;
13+
private Integer textSize;
14+
private Integer iconX;
15+
private Integer iconY;
16+
private Integer appsLinkIconX;
17+
private Integer appsLinkIconY;
18+
private File volumeIcon;
19+
private String volumeName;
20+
21+
public File getBackgroundImage() {
22+
return backgroundImage;
23+
}
24+
25+
public void setBackgroundImage(File backgroundImage) {
26+
this.backgroundImage = backgroundImage;
27+
}
28+
29+
public Integer getWindowWidth() {
30+
return windowWidth;
31+
}
32+
33+
public void setWindowWidth(Integer windowWidth) {
34+
this.windowWidth = windowWidth;
35+
}
36+
37+
public Integer getWindowHeight() {
38+
return windowHeight;
39+
}
40+
41+
public void setWindowHeight(Integer windowHeight) {
42+
this.windowHeight = windowHeight;
43+
}
44+
45+
public Integer getWindowX() {
46+
return windowX;
47+
}
48+
49+
public void setWindowX(Integer windowX) {
50+
this.windowX = windowX;
51+
}
52+
53+
public Integer getWindowY() {
54+
return windowY;
55+
}
56+
57+
public void setWindowY(Integer windowY) {
58+
this.windowY = windowY;
59+
}
60+
61+
public Integer getIconSize() {
62+
return iconSize;
63+
}
64+
65+
public void setIconSize(Integer iconSize) {
66+
this.iconSize = iconSize;
67+
}
68+
69+
public Integer getTextSize() {
70+
return textSize;
71+
}
72+
73+
public void setTextSize(Integer textSize) {
74+
this.textSize = textSize;
75+
}
76+
77+
public Integer getIconX() {
78+
return iconX;
79+
}
80+
81+
public void setIconX(Integer iconX) {
82+
this.iconX = iconX;
83+
}
84+
85+
public Integer getIconY() {
86+
return iconY;
87+
}
88+
89+
public void setIconY(Integer iconY) {
90+
this.iconY = iconY;
91+
}
92+
93+
public Integer getAppsLinkIconX() {
94+
return appsLinkIconX;
95+
}
96+
97+
public void setAppsLinkIconX(Integer appsLinkIconX) {
98+
this.appsLinkIconX = appsLinkIconX;
99+
}
100+
101+
public Integer getAppsLinkIconY() {
102+
return appsLinkIconY;
103+
}
104+
105+
public void setAppsLinkIconY(Integer appsLinkIconY) {
106+
this.appsLinkIconY = appsLinkIconY;
107+
}
108+
109+
public File getVolumeIcon() {
110+
return volumeIcon;
111+
}
112+
113+
public void setVolumeIcon(File volumeIcon) {
114+
this.volumeIcon = volumeIcon;
115+
}
116+
117+
public String getVolumeName() {
118+
return volumeName;
119+
}
120+
121+
public void setVolumeName(String volumeName) {
122+
this.volumeName = volumeName;
123+
}
124+
125+
}

src/main/java/io/github/fvarrui/javapackager/Platform.java renamed to src/main/java/io/github/fvarrui/javapackager/model/Platform.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.fvarrui.javapackager;
1+
package io.github.fvarrui.javapackager.model;
22

33
public enum Platform {
44
auto,

src/main/java/io/github/fvarrui/javapackager/VersionInfo.java renamed to src/main/java/io/github/fvarrui/javapackager/model/WinConfig.java

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,22 @@
1-
package io.github.fvarrui.javapackager;
1+
package io.github.fvarrui.javapackager.model;
22

33
import static org.apache.commons.lang3.StringUtils.defaultIfBlank;
44

55
import java.util.Map;
66

7-
import org.apache.maven.plugins.annotations.Parameter;
7+
public class WinConfig {
88

9-
public class VersionInfo {
10-
11-
@Parameter(defaultValue = "${organizationName}", required = false)
129
private String companyName;
13-
14-
@Parameter(required = false)
1510
private String copyright;
16-
17-
@Parameter(defaultValue = "${description}", required = false)
1811
private String fileDescription;
19-
20-
@Parameter(required = false)
2112
private String fileVersion;
22-
23-
@Parameter(defaultValue = "${name}", required = false)
2413
private String internalName;
25-
26-
@Parameter(required = false)
2714
private String language;
28-
29-
@Parameter(defaultValue = "${name}.exe", required = false)
3015
private String originalFilename;
31-
32-
@Parameter(defaultValue = "${name}", required = false)
3316
private String productName;
34-
35-
@Parameter(required = false)
3617
private String productVersion;
37-
38-
@Parameter(required = false)
3918
private String trademarks;
40-
41-
@Parameter(defaultValue = "${version}", required = false)
4219
private String txtFileVersion;
43-
44-
@Parameter(defaultValue = "${version}", required = false)
4520
private String txtProductVersion;
4621

4722
public String getCompanyName() {

src/main/java/io/github/fvarrui/javapackager/utils/IconUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.github.fvarrui.javapackager.utils;
22

3-
import io.github.fvarrui.javapackager.Platform;
3+
import io.github.fvarrui.javapackager.model.Platform;
44

55
public class IconUtils {
66

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.github.fvarrui.javapackager.utils;
2+
3+
public class NumberUtils {
4+
5+
public static int defaultIfNull(Integer value, int defaultValue) {
6+
if (value == null) return defaultValue;
7+
return value.intValue();
8+
}
9+
10+
}

0 commit comments

Comments
 (0)