davetcc / hugojoomla

Converts Joomla database content into Hugo md files
Apache License 2.0
10 stars 7 forks source link

Embedding jar dependencies in hugojoomla jar #22

Closed matt6697 closed 3 years ago

matt6697 commented 3 years ago

Embedding jar dependencies in hugojoomla jar to make it run as a standalone jar outside of the target directory

matt6697 commented 3 years ago
matt@DESKTOP:/tmp/test$ unzip hugo-joomla-0.2-SNAPSHOT.jar
Archive:  hugo-joomla-0.2-SNAPSHOT.jar
   creating: META-INF/
  inflating: META-INF/MANIFEST.MF
   creating: com/
   creating: com/thecoderscorner/
   creating: com/thecoderscorner/web/
   creating: com/thecoderscorner/web/hugojoomla/
  inflating: hugoJoomla.xml
  inflating: customHtmlModule.yaml.ftl
  inflating: defaultPage.toml.ftl
  inflating: defaultPage.yaml.ftl
  inflating: categoryPage.toml.ftl
  inflating: categoryPage.yaml.ftl
  inflating: com/thecoderscorner/web/hugojoomla/NastyContentChecker.class
  inflating: com/thecoderscorner/web/hugojoomla/JoomlaHugoConverter.class
  inflating: com/thecoderscorner/web/hugojoomla/HugoJoomla.class
  inflating: com/thecoderscorner/web/hugojoomla/JoomlaContent.class
  inflating: com/thecoderscorner/web/hugojoomla/TagInfo.class
  inflating: com/thecoderscorner/web/hugojoomla/JoomlaImage.class
  inflating: log4j.xml
   creating: META-INF/maven/
   creating: META-INF/maven/com.thecoderscorner.web./
   creating: META-INF/maven/com.thecoderscorner.web./hugo-joomla/
  inflating: META-INF/maven/com.thecoderscorner.web./hugo-joomla/pom.xml
  inflating: META-INF/maven/com.thecoderscorner.web./hugo-joomla/pom.properties
   creating: lib/
 extracting: lib/slf4j-log4j12-1.7.21.jar
 extracting: lib/slf4j-api-1.7.21.jar
 extracting: lib/log4j-1.2.17.jar
 extracting: lib/spring-context-4.3.3.RELEASE.jar
 extracting: lib/spring-aop-4.3.3.RELEASE.jar
 extracting: lib/spring-core-4.3.3.RELEASE.jar
 extracting: lib/commons-logging-1.2.jar
 extracting: lib/spring-expression-4.3.3.RELEASE.jar
 extracting: lib/spring-beans-4.3.3.RELEASE.jar
 extracting: lib/spring-jdbc-4.3.3.RELEASE.jar
 extracting: lib/spring-tx-4.3.3.RELEASE.jar
 extracting: lib/freemarker-2.3.23.jar
 extracting: lib/mysql-connector-java-8.0.26.jar
 extracting: lib/protobuf-java-3.11.4.jar
 extracting: lib/guava-30.0-jre.jar
 extracting: lib/failureaccess-1.0.1.jar
 extracting: lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
 extracting: lib/jsr305-3.0.2.jar
 extracting: lib/checker-qual-3.5.0.jar
 extracting: lib/error_prone_annotations-2.3.4.jar
 extracting: lib/j2objc-annotations-1.3.jar
 extracting: lib/commons-cli-1.3.1.jar
 extracting: lib/json-simple-1.1.1.jar
 extracting: lib/junit-4.10.jar
 extracting: lib/hamcrest-core-1.1.jar
 extracting: lib/copy_down-1.0.jar
 extracting: lib/jsoup-1.13.1.jar
   creating: org/
   creating: org/springframework/
   creating: org/springframework/boot/
   creating: org/springframework/boot/loader/
  inflating: org/springframework/boot/loader/LaunchedURLClassLoader$Java7LockProvider.class
  inflating: org/springframework/boot/loader/PropertiesLauncher$ArchiveEntryFilter.class
  inflating: org/springframework/boot/loader/PropertiesLauncher$PrefixMatchingArchiveFilter.class
  inflating: org/springframework/boot/loader/ExecutableArchiveLauncher$1.class
  inflating: org/springframework/boot/loader/PropertiesLauncher.class
   creating: org/springframework/boot/loader/data/
  inflating: org/springframework/boot/loader/data/ByteArrayRandomAccessData.class
  inflating: org/springframework/boot/loader/data/RandomAccessDataFile$DataInputStream.class
  inflating: org/springframework/boot/loader/data/RandomAccessData.class
  inflating: org/springframework/boot/loader/data/RandomAccessDataFile$FilePool.class
  inflating: org/springframework/boot/loader/data/RandomAccessDataFile.class
  inflating: org/springframework/boot/loader/data/RandomAccessData$ResourceAccess.class
   creating: org/springframework/boot/loader/util/
  inflating: org/springframework/boot/loader/util/SystemPropertyUtils.class
  inflating: org/springframework/boot/loader/util/AsciiBytes.class
  inflating: org/springframework/boot/loader/LaunchedURLClassLoader$1.class
  inflating: org/springframework/boot/loader/InputArgumentsJavaAgentDetector.class
  inflating: org/springframework/boot/loader/Launcher.class
  inflating: org/springframework/boot/loader/LaunchedURLClassLoader.class
  inflating: org/springframework/boot/loader/JarLauncher.class
   creating: org/springframework/boot/loader/jar/
  inflating: org/springframework/boot/loader/jar/JarEntryFilter.class
  inflating: org/springframework/boot/loader/jar/JarURLConnection.class
  inflating: org/springframework/boot/loader/jar/JarEntry.class
  inflating: org/springframework/boot/loader/jar/Bytes.class
  inflating: org/springframework/boot/loader/jar/CentralDirectoryEndRecord.class
  inflating: org/springframework/boot/loader/jar/JarFile$2.class
  inflating: org/springframework/boot/loader/jar/ZipInflaterInputStream.class
  inflating: org/springframework/boot/loader/jar/JarFile.class
  inflating: org/springframework/boot/loader/jar/JarFile$1.class
  inflating: org/springframework/boot/loader/jar/JarURLConnection$1.class
  inflating: org/springframework/boot/loader/jar/Handler.class
  inflating: org/springframework/boot/loader/jar/JarURLConnection$JarEntryName.class
  inflating: org/springframework/boot/loader/jar/JarEntryData.class
  inflating: org/springframework/boot/loader/MainMethodRunner.class
  inflating: org/springframework/boot/loader/InputArgumentsJavaAgentDetector$1.class
  inflating: org/springframework/boot/loader/WarLauncher.class
  inflating: org/springframework/boot/loader/LaunchedURLClassLoader$2.class
  inflating: org/springframework/boot/loader/PropertiesLauncher$1.class
  inflating: org/springframework/boot/loader/ExecutableArchiveLauncher.class
  inflating: org/springframework/boot/loader/LaunchedURLClassLoader$LockProvider.class
   creating: org/springframework/boot/loader/archive/
  inflating: org/springframework/boot/loader/archive/JarFileArchive$JarFileEntry.class
  inflating: org/springframework/boot/loader/archive/JarFileArchive.class
  inflating: org/springframework/boot/loader/archive/FilteredArchive.class
  inflating: org/springframework/boot/loader/archive/JarFileArchive$1.class
  inflating: org/springframework/boot/loader/archive/ExplodedArchive.class
  inflating: org/springframework/boot/loader/archive/FilteredArchive$2.class
  inflating: org/springframework/boot/loader/archive/Archive$Entry.class
  inflating: org/springframework/boot/loader/archive/Archive$EntryFilter.class
  inflating: org/springframework/boot/loader/archive/FilteredArchive$1.class
  inflating: org/springframework/boot/loader/archive/ExplodedArchive$FileEntry.class
  inflating: org/springframework/boot/loader/archive/Archive.class
  inflating: org/springframework/boot/loader/archive/Archive$EntryRenameFilter.class
  inflating: org/springframework/boot/loader/archive/ExplodedArchive$FilteredURLStreamHandler.class
  inflating: org/springframework/boot/loader/archive/ExplodedArchive$FileNotFoundURLConnection.class
  inflating: org/springframework/boot/loader/JavaAgentDetector.class
matt6697 commented 3 years ago

Hugo joomla JAR is now working as a standalone jar outside of the target directory ! We could now work on automating the github release process of the program using github workflow when a new tag is created ;-)

matt@DESKTOP:/tmp/test$  java -jar hugo-joomla-0.2-SNAPSHOT.jar
log4j: reset attribute= "false".
log4j: Threshold ="null".
log4j: Level value for root is  [INFO].
log4j: root level set to INFO
log4j: Class name: [org.apache.log4j.ConsoleAppender]
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n].
log4j: Adding appender named [console] to category [root].
...

@davetcc : Could you please test this on your side and merge if build is ok for you ?

davetcc commented 3 years ago

Looks great, I'll try this build now

davetcc commented 3 years ago

Merged, checked it on my mac just now, built and all good.

Another longer term option is jlink / jpackage built into the JDK from 11 onwards, these commands build executables that don't need a JRE / JDK present.