Sbt, creating MANIFEST.MF (without uber jar) - plugins

I have a multi-module sbt project where each module exposes some information through a META-INF/MANIFEST.MF file.
At this time, the MANIFEST.MF files are maintained manually. But I would like to generate them with some informations available into the sbt build file (name, version, dependencies).
Is there any plugin that can help with that task? Something like the sbt-buildinfo plugin but for a MANIFEST.MF file.
Please, note that I do not want to create one uber jar. I would like to keep modules in individual jars.
Thanks

Related

Skinny War file with Maven in Eclipse

I have a Maven project 'Project A' which contains dependencies. I have a requirement to abstract the dependencies from this project into another project called 'Shared Lib' so that I can make what is called a "Skinny War" file from Project A. Both these files will then be uploaded to a Weblogic server.
However, I am having a lot of difficulties being able to get Project A to pick up the dependencies in Shared Lib.
Some guidance on how I should approach this problem would be much appreciated.
Thanks!
I would split the maven project into two modules. If we call one module SharedLib and the second one Skinny War then you will have something like:
<modules>
<module>sharedLib</module>
<module>skinnyWar</module>
</modules>
In the shared lib module pom.xml you will fill all the dependencies required for the project. In the skinnyWar module your first dependency in the list will be for the sharedLib module. You might need to setup the assembly plugin for the sharedLib module to create a jar in the package phase and you are good to go ;)
Some food of though - do you really want to do this? An important part about using maven is to take care of dependencies for you and package a easy to deploy jar. If you create two different jars it would cause all other kinds of troubles like - were both deployed. Are we using an older version of the dependencies etc.

multi-project sbt build - package all dependent JARs in one directory

I have a multi-project SBT build: some projects are dependent on each other, some are dependent on third-party JARs, and there's a "main" project which depends on everything .
When I sbt package it, I get one JAR in each target/ directory.
What I want to achieve is getting all relevant JARs (mine and external) is one directory. Very similar to the way you package a WAR with Maven.
(And to clarify - I'm not interested in an assembled "FAT JAR" that contains all the dependencies in a single file. Just one directory with all JARs in it)
Im not 100% sure about the suprobject dependencies but I think SBT native packager should help you do something like that, and will also provide a start-script for windows and unixes:
http://www.scala-sbt.org/sbt-native-packager/GettingStartedApplications/MyFirstProject.html
I would recommend sbt-pack for creating self-contained JARs:
https://github.com/xerial/sbt-pack
I use it and haven't seen a glitch so far.
It also generates both OS X/Linux as well as Windows .bat entry scripts for the main classes/objects you choose.

sbt for web app with command line code

I'd like sbt to generate two packages:
A WAR file, for the web app
A JAR file, which has command line and batch code
The two packages share a lot of similar code (the business logic) and dependencies, but of course the Servlet aspects are only in the WAR, and the command line and batch only in the JAR.
I'd like the JAR to run by itself, no external dependencies required (ala sbt-assembly).
How can I do this?
WAR file
You can make a war file using earldouglas/xsbt-web-plugin and use sbt-assembly for fat JAR. You might have to get a bit creative to include some files in one but exclude from the other.
Generating JAR and WAR from the same code base
If the resulting packages contain different library dependencies at the end, for example including Jetty or Netty for standalone JAR, I think it needs to be a separate subproject. See Multi Project builds.

scala generating jar file from scala-io to include in eclipse

I am trying to use the library scala-io in my Eclipse environment, does anyone know how do I generate a jar file, or which folder to include in my eclipse so that I can have access to the scala-io library from my project ?
EDIT:
Q: How to incorporate an external library into scala IDE?
A: Two possibilities:
Leverage SBT to build your project; that is generating jar files and maintaining dependency
Including the generted jar files directory in the IDE, project -> Properties -> Java build paths.
hth.
EDIT #2:
I found this great plugin to generate all of your dependencies in one jar file sbt-assembly
http://jesseeichar.github.io/scala-io-doc/0.4.2/index.html#!/getting-started
shows how to start with sbt or maven or with prebuild jars provided by links.
You should try to get familiar with a build system like sbt. Its cumbersome to always manually add dependencies to eclipse, especially if you have dependency chains: scala-io needs scala-io-core and arm and file etc...

Intellij repackage dependencies in jarfile?

I am a big fan of jetbrains products, and am an intellij (community edition) user for all my java development. However there is one feature from eclipse that I REALLY miss. In eclipse, if I had a bunch of jarfile dependencies, I could repackage them in my runnable jar file so all dependencies were contained in one jar file.
I can not find anything that will get this done in intellij, so I am forced to export my projects to eclipse format from intellij, fix the project configuration in eclipse (since intellij doesnt do such a great job on the export) and then build my jarfiles from eclipse.
Have you taken a look at the build artifact component of IntelliJ? It allows you to define a JAR build artifact (executable or non-executable) that can include the dependencies either extracted within the target Jar or as a link within the Jar's Manifest file. See this blog entry for the details: http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/