@@ -104,37 +104,29 @@ GROUP_ID="com.codenameone.examples"
104104ARTIFACT_ID=" hello-codenameone"
105105MAIN_NAME=" HelloCodenameOne"
106106
107+ SOURCE_PROJECT=" $REPO_ROOT /Samples/SampleProjectTemplate"
108+ if [ ! -d " $SOURCE_PROJECT " ]; then
109+ ba_log " Source project template not found at $SOURCE_PROJECT " >&2
110+ exit 1
111+ fi
112+ ba_log " Using source project template at $SOURCE_PROJECT "
113+
107114LOCAL_MAVEN_REPO=" ${LOCAL_MAVEN_REPO:- $HOME / .m2/ repository} "
108115ba_log " Using local Maven repository at $LOCAL_MAVEN_REPO "
109116mkdir -p " $LOCAL_MAVEN_REPO "
110117MAVEN_CMD=(" $MAVEN_HOME /bin/mvn" -Dmaven.repo.local=" $LOCAL_MAVEN_REPO " )
111118
112- ARCHETYPE_PLUGIN_VERSION=" 3.2.1"
113- ARCHETYPE_PLUGIN_JAR=" $LOCAL_MAVEN_REPO /org/apache/maven/plugins/maven-archetype-plugin/$ARCHETYPE_PLUGIN_VERSION /maven-archetype-plugin-$ARCHETYPE_PLUGIN_VERSION .jar"
114-
115- if [ ! -f " $ARCHETYPE_PLUGIN_JAR " ]; then
116- ba_log " Preloading Maven archetype plugin version $ARCHETYPE_PLUGIN_VERSION into $LOCAL_MAVEN_REPO "
117- if ! xvfb-run -a " ${MAVEN_CMD[@]} " -B org.apache.maven.plugins:maven-archetype-plugin:" $ARCHETYPE_PLUGIN_VERSION " :help -Ddetail -Dgoal=generate; then
118- ba_log " Failed to cache maven-archetype-plugin $ARCHETYPE_PLUGIN_VERSION ; archetype generation may download dependencies" >&2
119- fi
120- else
121- ba_log " Maven archetype plugin $ARCHETYPE_PLUGIN_VERSION already cached"
122- fi
123-
124- ba_log " Generating Codename One application skeleton"
125- xvfb-run -a " ${MAVEN_CMD[@]} " -q --offline archetype:generate \
126- -DarchetypeArtifactId=cn1app-archetype \
127- -DarchetypeGroupId=com.codenameone \
128- -DarchetypeVersion=" $CN1_VERSION " \
129- -DarchetypeCatalog=local \
130- -DgroupId=" $GROUP_ID " \
131- -DartifactId=" $ARTIFACT_ID " \
132- -Dversion=1.0-SNAPSHOT \
133- -DmainName=" $MAIN_NAME " \
134- -DinteractiveMode=false \
135- -Dpackage=" $GROUP_ID .$MAIN_NAME " \
136- -DoutputDirectory=" $WORK_DIR " \
137- " ${EXTRA_MVN_ARGS[@]} "
119+ ba_log " Generating Codename One application skeleton via codenameone-maven-plugin"
120+ (
121+ cd " $WORK_DIR "
122+ xvfb-run -a " ${MAVEN_CMD[@]} " -q --offline \
123+ com.codenameone:codenameone-maven-plugin:" $CN1_VERSION " :generate-app-project \
124+ -DgroupId=" $GROUP_ID " \
125+ -DartifactId=" $ARTIFACT_ID " \
126+ -Dversion=1.0-SNAPSHOT \
127+ -DsourceProject=" $SOURCE_PROJECT " \
128+ " ${EXTRA_MVN_ARGS[@]} "
129+ )
138130
139131APP_DIR=" $WORK_DIR /$ARTIFACT_ID "
140132if [ ! -d " $APP_DIR " ]; then
@@ -158,6 +150,13 @@ if [ -z "$PACKAGE_NAME" ]; then
158150 exit 1
159151fi
160152
153+ TARGET_MAIN_FILE_DIR=" $( dirname " $MAIN_FILE " ) "
154+ TARGET_MAIN_FILE=" $TARGET_MAIN_FILE_DIR /${MAIN_NAME} .java"
155+ if [ " $MAIN_FILE " != " $TARGET_MAIN_FILE " ]; then
156+ mv " $MAIN_FILE " " $TARGET_MAIN_FILE "
157+ MAIN_FILE=" $TARGET_MAIN_FILE "
158+ fi
159+
161160cat > " $MAIN_FILE " << HELLOEOF
162161package $PACKAGE_NAME ;
163162
@@ -194,6 +193,31 @@ public class ${MAIN_NAME} {
194193HELLOEOF
195194
196195SETTINGS_FILE=" $APP_DIR /common/codenameone_settings.properties"
196+ ba_log " Setting codename1.mainName to $MAIN_NAME "
197+ if [ -f " $SETTINGS_FILE " ]; then
198+ if grep -q ' ^codename1.mainName=' " $SETTINGS_FILE " ; then
199+ python3 - " $SETTINGS_FILE " " $MAIN_NAME " << 'PY '
200+ import pathlib
201+ import re
202+ import sys
203+
204+ path = pathlib.Path(sys.argv[1])
205+ main_name = sys.argv[2]
206+ text = path.read_text()
207+ replacement = f'codename1.mainName={main_name}'
208+ if re.search(r'^codename1\.mainName=', text, flags=re.MULTILINE):
209+ text = re.sub(r'^codename1\.mainName=.*$', replacement, text, flags=re.MULTILINE)
210+ else:
211+ text = text + ('\n' if not text.endswith('\n') else '') + replacement + '\n'
212+ path.write_text(text if text.endswith('\n') else text + '\n')
213+ PY
214+ else
215+ printf ' \ncodename1.mainName=%s\n' " $MAIN_NAME " >> " $SETTINGS_FILE "
216+ fi
217+ else
218+ printf ' codename1.mainName=%s\n' " $MAIN_NAME " > " $SETTINGS_FILE "
219+ fi
220+
197221ba_log " Disabling Codename One CSS compilation to avoid headless failures"
198222if [ -f " $SETTINGS_FILE " ]; then
199223 if grep -q ' ^codename1.cssTheme=' " $SETTINGS_FILE " ; then
0 commit comments