Okay, I have now experimented with obfuscating all the needed jars first,
dumping them into target and running jnlp-inline after. Unfortunately, that
does not work. The webstart plugin ignores all the obfuscated jars and just use
the non-obfuscated ones from the repository instead? What am I doing wrong here?
Then I tried to put all the obfuscated jars in a subdirectory of target and
telling the webstart-plugin to use this subdir as workDirectory. This
sort-of-worked but not quite. Now, webstart-plugin packages all my obfuscated
jars, together with the unobfuscated dependencies, but it does not perform the
pack-200 nor the jarsigning on the obfuscated jars. Yikes, so close but still
no joy…
So, how do I convince the webstart-plugin to perform the pack200 and jarsign on
my freshly proguarded jars as well as on the pulled in dependencies?
The other option, obfuscating the jars separately and storing them with a
classifier alongside the unobfuscated jar, only works partially. I need to
specifically use a command-line “-Dpg=classifier” for this to work. I tried to
create profiles, where this classifier is defined, like this:
<profiles>
<profile>
<id>dev</id>
<activation><activeByDefault>true</activeByDefault></activation>
<properties>
<pg></pg>
</properties>
</profile>
<profile>
<id>rel</id>
<properties>
<pg>pg</pg>
</properties>
</profile>
</profiles>
Unfortunately, when specifying “-Prel” the webstart-plugin still manages to
pull in some of the unobfuscated jars. This might be a separate error compared
to MWEBSTART-54.
Regards,
/Henrik
From: Kevin Stembridge [mailto:[EMAIL PROTECTED]
Sent: 19. oktober 2007 15:49
I'm sure you could obfuscate all your jars if you want to. From the webstart
plugin's perspective it makes no difference whether the artifacts are
obfuscated or not, it just assembles the artifacts that you tell it to, along
with transitive dependencies. Although I still need to sort out the system and
test scope issue. I've raised an issue for that if you want to keep an eye on
it.
http://jira.codehaus.org/browse/MWEBSTART-54
With regards to when and how to obfuscate the jars, my approach would be to use
proguard in each module. Also, you might find it useful to add your proguard
and webstart plugin to a profile so that it only runs, for example, when you
are ready to do a build and deploy it via webstart. I'm guessing that during
development you will be running the unobfuscated code and only deploy the
obfuscated code for system testing.
Re: provided scope. In your client project I would declare the core module to
be a provided dependency. If I'm correct in assuming that Configurator is your
maven project that creates the JNLP bundle, then this module doesn't have a
dependency on either client or core, although you may need to declare it as
such to ensure the correct build order. Unlike the other mojos in the webstart
plugin, the JnlpDownloadServletMojo ignores the dependencies of the project in
which it is used, instead it has a configuration section that defines the
artifacts to be bundled.