a: There are only two really effective ways of training soldiers without modding atm.
#1: Make a small 4x4 room with a door and a weapon rack. set all melee squads to active/training status(s, select each squad by letter and hit t to change the "Inactive", to Active/Training"), and make sure they all are set to train at that weapon rack only(hover over the built weapon rack with q, use + and - to set each melee squad to train with t. Ignore all other features of the weapon rack, they are all pretty much useless). Build Upright Spear/Spike traps containing ONLY wooden training spears, 1 is fine, more is better, up to 10 per trap. Link each of these to one lever(q to hover over the lever, a for new task S for link to SPear/Spike trap, then link each individual trap to the lever) right outside the training room. Then set the lever to be pulled repeatedly(q to hover over the lever, a for new task, P to pull the lever, then r to repeat the task infinitely until told otherwise). Your dwarves armor, shield, dodge, fighting, and weapon skills will skyrocket. They go up so fast that some consider it kind of exploity, however you can decide that for yourself. If you do decide this is a bit like cheating, you can do this instead:
#2: Catch various attackers in cages, then make an "arena" of sorts. I recommend storing all non empty cages in a stockpile(you can do this by making an animal stockpike, then hovering over it with q, hitting s for settings, then going to Animals, and hitting u and j to make the "Empty Cages" and Empty Animal Traps" options down in the bottom right corner dim), channeling down 2-3 floors in one tile, then making the room down there the arena. Make sure there's a door into the room, station your military in the room, lock the door, and then drop two or three of the cages invaders into the room at a time by setting a zone with i over the hole and using p to set Pit/Pond to active, then hitting P while still looking at it and then hitting enter when by the name of the invader you want thrown in there.
Few important things when using this method:
#1: Do NOT use animals for this. Tame ones can't be attacked, and untame ones will attack the dwarves that release them. You can, however, station your dwarves by the full cages, then set the untame animals to be thrown in the pit, the random hauler dwarves will release them and your military will immediately jump on them axe first.
#2: Do NOT use thieves for this. They function just like animals. However, again, you can use the same trick for them you use for animals.
#3: Disarm all invaders before throwing them in the pit. There's a much less effective easy way and a harder way. The easy way is to mass dump(d-b-d) the cages containing invaders, then going back with k and un-dumping the cages. This will remove all clothing, armor, weapons, and anything else the invaders have and dump them, meaning your dwarves will slaughter them pretty much effortlessly. This works, but you won't get a whole lot of skill from it unless they happen to be master wrestlers or something. The (slightly) harder way requires an active bookkeeper that is keeping counts perfectly accurate(you can do this by setting a bookkeeper in the (n)obles menu, then assigning him an office by building a chair or throne somewhere just like a bedroom with a bed, then going back to the noble menu and selecting the bookkeeper, hitting s, then setting it to "Highest Precision". You'll have to wait a bit, but it will then show exactly everything you have in the "Stocks" menu in the z menu). You first make sure no armor is dcurrently designated for dumping, then mass dump the cages again. Then go into the stocks menu, and go through each armor type(armor, legwear, headwear, handwear, footwear, shields) and un-dump them. Leave the weapons dumped. Your dwarves should then remove their weapons and leave the rest, meaning your dwarves will be almost totally safe, but still will have to beat on the goblins a good bit before they go down. This works even better with training weapons, as it'll take a bazillion hits to kill them with wood, giving even more skill. Just make sure they un-equip them after they're done, running into battle with wooden axes is a great way to lose your military.