@@ -16,6 +16,11 @@ DOWNLOAD_DIR="${TMPDIR%/}/codenameone-tools"
1616ENV_DIR=" $DOWNLOAD_DIR /tools"
1717EXTRA_MVN_ARGS=(" $@ " )
1818
19+ # Version of the Codename One Maven plugin guaranteed to be published on Maven Central.
20+ # This is used solely to bootstrap project generation; generated projects are rewritten
21+ # to target the locally built snapshot version afterwards.
22+ BOOTSTRAP_CN1_VERSION=" 7.0.204"
23+
1924ENV_FILE=" $ENV_DIR /env.sh"
2025ba_log " Loading workspace environment from $ENV_FILE "
2126if [ -f " $ENV_FILE " ]; then
@@ -114,13 +119,19 @@ ba_log "Using source project template at $SOURCE_PROJECT"
114119LOCAL_MAVEN_REPO=" ${LOCAL_MAVEN_REPO:- $HOME / .m2/ repository} "
115120ba_log " Using local Maven repository at $LOCAL_MAVEN_REPO "
116121mkdir -p " $LOCAL_MAVEN_REPO "
117- MAVEN_CMD=(" $MAVEN_HOME /bin/mvn" -Dmaven.repo.local=" $LOCAL_MAVEN_REPO " )
122+ MAVEN_CMD=(
123+ " $MAVEN_HOME /bin/mvn"
124+ -B
125+ -ntp
126+ -Dmaven.repo.local=" $LOCAL_MAVEN_REPO "
127+ -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
128+ )
118129
119130ba_log " Generating Codename One application skeleton via codenameone-maven-plugin"
120131(
121132 cd " $WORK_DIR "
122133 xvfb-run -a " ${MAVEN_CMD[@]} " -q --offline \
123- com.codenameone:codenameone-maven-plugin:" $CN1_VERSION " :generate-app-project \
134+ com.codenameone:codenameone-maven-plugin:" $BOOTSTRAP_CN1_VERSION " :generate-app-project \
124135 -DgroupId=" $GROUP_ID " \
125136 -DartifactId=" $ARTIFACT_ID " \
126137 -Dversion=1.0-SNAPSHOT \
@@ -134,6 +145,24 @@ if [ ! -d "$APP_DIR" ]; then
134145 exit 1
135146fi
136147
148+ if [ " $CN1_VERSION " != " $BOOTSTRAP_CN1_VERSION " ]; then
149+ ba_log " Replacing generated project Codename One version $BOOTSTRAP_CN1_VERSION with local version $CN1_VERSION "
150+ mapfile -t version_files < <( grep -rl " $BOOTSTRAP_CN1_VERSION " " $APP_DIR " || true)
151+ for vf in " ${version_files[@]} " ; do
152+ python3 - " $vf " " $BOOTSTRAP_CN1_VERSION " " $CN1_VERSION " << 'PY '
153+ import pathlib
154+ import sys
155+
156+ path = pathlib.Path(sys.argv[1])
157+ old = sys.argv[2]
158+ new = sys.argv[3]
159+ text = path.read_text()
160+ if old in text:
161+ path.write_text(text.replace(old, new))
162+ PY
163+ done
164+ fi
165+
137166if [ -f " $APP_DIR /build.sh" ]; then
138167 chmod +x " $APP_DIR /build.sh"
139168fi
0 commit comments